首页 > 代码库 > 23种设计模式

23种设计模式

1、 工厂方法

比如甲有个秘方A,乙丙想用秘方A,必须稍加修改变为BC才能使用。这样只需在用秘方时,从甲里获得并稍微修改就可以了,不必自己再去研制了。其中甲是一个接口工厂,A是接口定义的方法,乙丙是两个具体实现接口甲的工厂,BC是实现A的具体方法。

2、 抽象工厂

抽象工厂可以说是对工厂方法的进一步加工,工厂方法只有一个抽象产品类,而抽象工厂可以有多个,比如甲现在有两个或更多秘方,那么在获得秘方时,只需要配置选择乙或丙即可,不需要再一个一个的去获取乙丙生产的多个秘方了。

3、 建造者模式

建造者模式就是将对象的构建与它的表示分离,使得同样的构建过程出现不同的结果。比如去餐馆吃饭,有个传菜的,客人点不同的菜,通过传菜员告知厨师,然后厨师做不同的菜给客人。这个过程是一样的,就是结果不一样。

4、 原型模式

原型模式就是克隆,像文件的复制等都是原型模式。

5、 单例模式

单例模式确保一个类只有一个实例,构造函数是私有的,通过静态方法返回同一个实例。像身份证号,就算你居住的地方变了,但身份证号不会变。学号,虽然转专业了,但是在一个学校只有一个学号。

6、 适配器模式

主要是为了让不同类型的两种物品都可以相互使用。比如苹果手机充电线头和安卓的不一样,要想用安卓手机充电线给苹果手机充电,需要用到转换头,这个转换头相当于一个适配器,将安卓手机充电线和苹果手机连接起来。这就用到了适配器模式。

7、 桥接模式

毛笔绘画过程就可以看做桥接模式。比如绘制一幅画需要用到7种颜色,两种型号的笔。蜡笔、毛笔都可以完成。如果用蜡笔需要用到14支蜡笔,而毛笔只需要两种型号,外加7种颜料就可以了,毛笔绘画就是桥接模式。

8、 组合模式

组合模式可以看成是组合多个对象组成树状结构,多用于描述整体和部分的关系。

9、 装饰模式

装饰模式可以说是替代了继承,而是变为创建对象的方式去实现一个事物的多种功能。比如对密码加密,有三种方法,对应三个接口,如果想用这三个方法可以选择实现三个接口,但是如果选择装饰模式,可以不继承,只需要在一个类里面创建三种加密算法的对象即可。

10、外观模式

可以拿网页来说,首先一个网站有个主页,要想使用里面的其他链接,首先通过主页,在去使用里面的链接,这个主页就是一个外观,连接了链接与外部的通信。

11、享元模式

    享元模式是为了实现对象的复用。比如好几个英文单词里面含有A,如果键盘上的A只能为某一个单词所用,那得用多少按键啊,键盘上只有一个A按键,为所有含有A的单词所共享。

12、代理模式

代理模式分为静态代理和动态代理,静态代理是和目标对象一样继承了同一个接口,实现相同的方法,只是代理类中除了实现目标对象的方法以外,还实现了其他的一些功能。而动态代理比较高级,Spring的AOP编程就是用到了到动态代理。

13、职责链模式

职责链模式是为了避免请求发送者和请求接收者耦合在一起,尽可能让每个对象都能接收请求。比如请假,先找系主任请,由于天数较长,系主任没有那么高权限,需要找院长,以此类推,便形成了一条链,就是职责链,知道找到能处理请求的对象为止。

14、命令模式

就是将请求封装一个对象, 使用不同的请求对事物进行参数化。比如对于空调的温度及开关调整。我们可以通过遥控器进行调节,而无需知道它内部是怎么变化的。

15、解释器模式

顾名思义,就是翻译、解释。像面向对象语言开发的编译器和解释器等。

16、迭代器模式

通过一种方法访问聚合对象,而不用知道对象的内部情况。比如Java的迭代器,list等。我们可以使用迭代器实现数组的遍历等,只需要知道调用哪些方法实现哪些功能即可,我们不必去深究它是怎样实现的。

17、中介者模式

中介者类就是像一个中间人一样,通过它实现不认识的互不相干的或者认识的两个类进行交互。可以使其耦合松散。降低原有系统的耦合度。

18、备忘录模式

可以说是“后悔药模式”,可以将一些操作进行记录,实现操作的前进和撤销等。最典型的就是word可以进行撤销和前进操作,就是备忘录模式。

19、观察者模式

定义了对象间的一对多关系。当一个对象状态改变时,其他对象跟着变化。比如老鼠和猫,当猫的状态改变时,老鼠也会跟着变化,老鼠就是观察者,而猫就是老鼠的观察对象。

20、状态模式

使对象在其内部状态改变时改变它的行为。比如说人有喜怒哀乐,不同的情绪是不同的状态,根据状态不同,行为不同,但是人还是这个人,只是让人觉得他变成另外一个人一样。

21、策略模式

策略,就是应对某个事情的方法。比如清明去旅游,可以选择步行、汽车、坐火车等。根据出行的远近而选择不同的交通工具,就是策略模式。

22、模板方法模式

模板方法模式就类似于有一个框架模板,只有中间某些具体实现部分不同,而其他地方都一样。比如去银行办业务,取票,办事,走人。基本都是这样,就中间的办事不同,其他都一样,可以将除中间之外的部分封装起来,形成一个模板,就是模板方法。

23、访问者模式

就是有同一个事物,而不同的人去访问,使用。比如去医院看病,医生开了个药方,病人拿着药方去抓药,药房工作人员根据药方取药。就是访问者模式,即在不改变元素的类的情况下,去定义作用于这些元素的新操作。

23种设计模式