设计模式
文章平均质量分 85
计算机编程老师
这个作者很懒,什么都没留下…
展开
-
设计模式
设计模式简介设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大原创 2021-01-06 15:06:34 · 379 阅读 · 1 评论 -
设计模式(十四):模板模式
模式动机 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。模式定义 在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。模式结构模板模式包含如下角色:抽象模板(Abstract Template),具体模板(Concrete Template)。代码示例创建一个抽象类,原创 2020-12-28 17:25:45 · 849 阅读 · 0 评论 -
设计模式(十三):策略模式
模式动机完成一项任务,往往可以有多种不同的方式,每一种方式称为一个策略,我们可以根据环境或者条件的不同选择不同的策略来完成该项任务。在软件开发中也常常遇到类似的情况,实现某一个功能有多个途径,此时可以使用一种设计模式来使得系统可以灵活地选择解决途径,也能够方便地增加新的解决途径。在软件系统中,有许多算法可以实现某一功能,如查找、排序等,一种常用的方法是硬编码(Hard Coding)在一个类中,如需要提供多种查找算法,可以将这些算法写到一个类中,在该类中提供多个方法,每一个方法对应一个具体的查找算法原创 2020-12-28 16:41:20 · 852 阅读 · 0 评论 -
设计模式(十二):命令模式
模式动机 在软件设计中,我们经常需要向某些对象发送请求,但是并不知道请求的接收者是谁,也不知道被请求的操作是哪个,我们只需在程序运行时指定具体的请求接收者即可,此时,可以使用命令模式来进行设计,使得请求发送者与请求接收者消除彼此之间的耦合,让对象之间的调用关系更加灵活。 命令模式可以对发送者和接收者完全解耦,发送者与接收者之间没有直接引用关系,发送请求的对象只需要知道如何发送请求,而不必知道如何完成请求。这就是命令模式的模式动机。模式定义 命令模式(Command Pattern):将一个请求原创 2020-12-28 16:09:09 · 759 阅读 · 0 评论 -
设计模式(十一):代理模式
模式动机 在某些情况下,一个客户不想或者不能直接引用一个对 象,此时可以通过一个称之为“代理”的第三者来实现 间接引用。代理对象可以在客户端和目标对象之间起到 中介的作用,并且可以通过代理对象去掉客户不能看到 的内容和服务或者添加客户需要的额外服务。 通过引入一个新的对象(如小图片和远程代理 对象)来实现对真实对象的操作或者将新的对 象作为真实对象的一个替身,这种实现机制即 为代理模式,通过引入代理对象来间接访问一 个对象,这就是代理模式的模式动机。模式定义 代理模式(Proxy Patter原创 2020-12-28 15:36:25 · 838 阅读 · 0 评论 -
设计模式(十):享元模式
模式动机 面向对象技术可以很好地解决一些灵活性或可扩展性问题,但在很多情况下需要在系统中增加类和对象的个数。当对象数量太多时,将导致运行代价过高,带来性能下降等问题。享元模式正是为解决这一类问题而诞生的。享元模式通过共享技术实现相同或相似对象的重用。在享元模式中可以共享的相同内容称为内部状态(IntrinsicState),而那些需要外部环境来设置的不能共享的内容称为外部状态(Extrinsic State),由于区分了内部状态和外部状态,因此可以通过设置不同的外部状态使得相同的对象可以具有一些不原创 2020-12-28 14:50:01 · 732 阅读 · 0 评论 -
设计模式(九):外观模式
模式动机 设想一下在学校,你进宿舍的时候要用门禁卡,进入图书馆的时候要使用图书馆的卡,吃饭的时候要使用饭卡;一天你就要背着各种卡到处跑,尽管这些都不是很重,但是每次还有进行筛选之后才适用于不同的场景,会不会很累?考虑到这样一点,很多学校就将3卡合一,这样就非常方便了。在软件系统设计中,也存在这样的问题是否可以通过一个门面,进行统一的访问呢?今天我们来讲解外观模式,其目的就是解决多套子系统之间的统一访问问题。、模式定义外观模式(Facade Pattern):外部与一个子系统的通信必须通过一个统一的外原创 2020-12-27 17:38:53 · 737 阅读 · 0 评论 -
设计模式(八):装饰模式
模式动机一般有两种方式可以实现给一个类或对象增加行为:继承机制,使用继承机制是给现有类添加功能的一种有效途径,通过继承一个现有类可以使得子类在拥有自身方法的同时还拥有父类的方法。但是这种方法是静态的,用户不能控制增加行为的方式和时机。关联机制,即将一个类的对象嵌入另一个对象中,由另一个对象来决定是否调用嵌入对象的行为以便扩展自己的行为,我们称这个嵌入的对象为装饰器(Decorator)装饰模式以对客户透明的方式动态地给一个对象附加上更多的责任,换言之,客户端并不会觉得对象在装饰前和装饰后有什么不原创 2020-12-27 15:48:59 · 970 阅读 · 0 评论 -
设计模式(七):桥接模式
模式动机设想如果要绘制矩形、圆形、椭圆、正方形,我们至少需要4个形状类,但是如果绘制的图形需要具有不同的颜色,如红色、绿色、蓝色等,此时至少有如下两种设计方案:第一种设计方案是为每一种形状都提供一套各种颜色的版本。第二种设计方案是根据实际需要对形状和颜色进行组合对于有两个变化维度(即两个变化的原因)的系统,采用方案二来进行设计系统中类的个数更少,且系统扩展更为方便。设计方案二即是桥接模式的应用。桥接模式将继承关系转换为关联关系,从而降低了类与类之间的耦合,减少了代码编写量。模式定义桥接模式:原创 2020-12-27 14:58:34 · 905 阅读 · 0 评论 -
设计模式(六):适配器模式
模式动机在软件开发中采用类似于电源适配器的设计和编码技巧被称为适配器模式。通常情况下,客户端可以通过目标类的接口访问它所提供的服务。有时,现有的类可以满足客户类的功能需要,但是它所提供的接口不一定是客户类所期望的,这可能是因为现有类中方法名与目标类中定义的方法名不一致等原因所导致的。在这种情况下,现有的接口需要转化为客户类期望的接口,这样保证了对现有类的重用。如果不进行这样的转化,客户类就不能利用现有类所提供的功能,适配器模式可以完成这样的转化。在适配器模式中可以定义一个包装类,包装不兼容接口的对原创 2020-12-27 14:14:11 · 969 阅读 · 0 评论 -
设计模式(五):单例模式
模式动机Java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍三种:懒汉式单例、饿汉式单例。 单例模式有以下特点: 1、单例类只能有一个实例。 2、单例类必须自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实例。 单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。懒汉式单例//懒汉式单例类.在第一次调用的时候实例化自己 public class Singleton { private Singleton() {原创 2020-12-25 16:59:51 · 965 阅读 · 0 评论 -
设计模式(四):建造者模式
模式动机在现实生活中,有很多复杂的对象,拥有很多的组件,例如手机,有显示屏、CPU等;我们使用的时候是一起使用的,但是我们基本上不知道这些部件的实现细节,这时我们可以通过建造者模式对其进行设计和描述,建造者哦是将部件和其组装过程分开,一步一步创建一个复杂的对象,用户只需要指定复杂的类型就可以得到该对象,而无须知道其内部的具体构造细节。 在软件开发中,也存在大量类似汽车一样的复杂对象,它们拥有一系列成员属性,这些成员属性中有些是引用类型的成员对象。而且在这些复杂对象中,还可能存在一些限制条件,如某些属性原创 2020-12-25 15:24:39 · 995 阅读 · 0 评论 -
设计模式(三):抽象工厂模式
模式动机 在工厂方法模式中,每一个产品对应于每一个具体的工厂方法。但是一般的情况下,我们需要一个工厂可以提供多个产品对象,而不是单一的产品对象。产品等级结构:产品等级结构业绩回升产品的继承结构,例如一个抽象类是数据库,数据库有MySQL、Oracle等。产品族:在抽象工厂模式中,产品族着的是同一个工厂生产的,位于不同产品等级结构的一组产品,例如Oracle公司有Oracle数据库、Java语言等。 如果系统所提供的工厂所需生产的具体产品ing不是一个简单的对象,而是多个位于不同产品等级结构中属于原创 2020-12-24 16:22:20 · 1114 阅读 · 1 评论 -
设计模式(二):工厂方法模式
模式动机 在简单工厂模式中,如果在原来的实现的基础上,我们再增加一个产品类的实现,那么我们必须在原来的工厂方法里修改工厂类的源代码.那么有没有更好的方法,可以不修改工厂类的源代码而进行动态的可扩展呢?今天我们将要介绍的设计模式之工厂方法模式,就是这样的一个很好的设计思路:将工厂类进行抽象,根据不同的产品创建不同的工厂类,如果动态的增加了一个产品,我们只需要实现这个产品的具体类的工厂类即可。模式定义 工厂方法模式也称为工厂模式,属于创建型模式。在工厂方法模式中,工厂父类负责定义创建产品对象的公共接口原创 2020-12-24 15:17:34 · 1293 阅读 · 0 评论 -
设计模式(一):简单工厂模式
模式动机 做过Web开发的开发者都知道,在将用户的密码存储在数据库中时,我们需要将密码首先加密然后在写入数据库。 在Java中,我们常用的加密手段有MD5、RSA等。我们使用的代码是:KeyPairGenerator.getInstance("RSA");如果我们需要使用MD5时传入的参数就是MD5。这里,就是我们今天需要讲解的简单工厂模式。模式定义 简单工厂模式又称为静态工厂模式,这个模式数据创建式模式。在简单工厂模式中,根据传入的参数,返回不同类的实例。模式结构简单工厂模式包含如下角原创 2020-12-24 14:17:35 · 2870 阅读 · 1 评论