设计模式

来源:互联网 发布:霍尼韦尔6160键盘编程 编辑:程序博客网 时间:2024/06/05 19:39

来源:笑点网

一、简单工厂模式:

简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例。而产品类不能很多,最好是特定的几种。
简单工厂模式是实现不同的目标,用相同的方法
二、策略模式:
与简单工厂模式的不同在于不需要在类内部通过条件去创建对应的产品类,而是直接定位到某一个产品类。
策略模式是为同一个目的选择不同的方法而已,由客户去选择,如某人要去某地,某人自己选择交通工具
封装变化点是我们面向对象的一种很重要的思维方式。
三、装饰模式:

对一个对象进行组合、装饰,如:点快餐,可以点米饭、粉条、面包等等,点了米饭,还可以给米饭配其它各种菜

四、代理模式:

第三方平台的接口可能有有变化,这个时候封装这个类(原始类)后,再加一个代理类,客户端使用这个代理类,这样原始类修改了,也不用修改代理类和客户端代码

五、工厂方法模式:

简单工厂模式是能够根据客户端传入的参数,确定需要哪个产品类,如+-*/等等算法,但有时我们根本就不能通过客户端传入的参数去确定产品类。这时就可以用工厂方法模式了,核心是不同的工厂方法对于不同的一种产品类,这个是需要客户端代码去选择不同的方法

六、原型模式:

七、模板方法模式:

定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变算法的结构即可重新定义该算法的某些特定步骤

八、外观模式:

为子系统的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。

比如投资理财,你可以用多种投资手段,如股票、国债、房产等等,如果每种都要自己亲自操作的话,那需要学习太多对应的知识了。但你可以买基金,基金就包含各种投资方式,也就是基金封装了这些投资方式的,而你只需要了解基金就可以了,你就是这个外观者。

九、建造者模式

定义

将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式。

实用范围

1 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。
2 当构造过程必须允许被构造的对象有不同表示时。

角色

在这样的设计模式中,有以下几个角色:
1 builder:为创建一个产品对象的各个部件指定抽象接口。
2 ConcreteBuilder:实现Builder的接口以构造和装配该产品的各个部件,定义并明确它所创建的表示,并 提供一个检索产品的接口。
3 Director:构造一个使用Builder接口的对象。
4 Product:表示被构造的复杂对象。ConcreteBuilder创建该产品的内部表示并定义它的装配过程,包含定义组成部件的类,包括将这些部件装配成最终产品的接口。

十、观察者模式
当一个对象的改变需要改变其它对象的时候,而且它不知道有多少具体对象要改变的情况下可以用观察者模式
有时被称作发布/订阅模式,观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。

十一、抽象工厂模式
其实工厂方法模式是用来创建一个产品的等级结构的,而抽象工厂模式是用来创建多个产品的等级结构的。工厂方法创建一般只有一个方法,创建一种产品。抽象工厂一般有多个方法,创建一系列产品。
十二、状态模式:
当一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为时,就可以考虑使用状态模式来
十三、适配器模式
跟代理模式类似,但代理模式中的代理是直接使用被代理的功能,而适配器是需要这该功能加工的
十四、备忘录模式
记录当前状态,用于以后查看或恢复
十五、组合模式
如一个公司下面有不同的部门,公司下面又有子公司,子公司也有不同的部门,这个时候可以用组合模式
十六、迭代器模式
       当你需要访问一个聚合对象,而且不管这些对象是什么都需要遍历的时候,就应该考虑使用迭代器模式。另外,当需要对聚集有多种方式遍历时,可以考虑去使用迭代器模式。迭代器模式为遍历不同的聚集结构提供如开始、下一个、是否结束、当前哪一项等统一的接口。
十七、单例模式
保证对象只实例化一次,并且提供一个实例化的方法点,具体实现方法就是构造方法设为私有,对外方法里去实例化自己,并且加判断以只实例化一次
十八、桥接模式
在发现我们需要多角度去分类实现对象,每种分类都可能有多种情况,那么就对这种对角度分离出来让它们独立变化,减少它们之间的耦合
十九、命令模式
在软件系统中,“行为请求者”与“行为实现者”通常呈现一种“紧耦合”。但在某些场合,比如要对行为进行“记录、撤销/重做、事务”等处理,这种无法抵御变化的紧耦合是不合适的。在这种情况下,如何将“行为请求者”与“行为实现者”解耦?将一组行为抽象为对象,实现二者之间的松耦合。这就是命令模式
二十、职责链模式
在职责链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链
请求在这条链上传递,直到链上的某一个对象处理此请求为止。
出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织链和分配责任
如:请假
二十一、中介者模式:
用一个中介对象来封装一系列的对象交互。中介者使各个对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互
二十二、享元模式
运用共享技术有效地支持大量细粒度的对象,如:一盘围棋,有361个空位,那如果用常规的面向对象编程,每盘旗都可能有两三百个棋子对象产生,一台服务器就很难支持更多的玩家玩围棋了,毕竟内存空间还是有限的。如果用了享元模式来处理棋子,那么棋子对象可以减少到只有两个实例
二十三、解释器模式:
二十四、访问者模式:

0 0
原创粉丝点击