PS:个人思考,如果有错误或者有想探讨的地方欢迎指出,谢谢~
=================================================================
1、策略模式
概述:
定义算法族,分别封装,让它们可以相互替换。
实质:
将抽象主体对象拥有的(可变化)行为封装成一个抽象行为类(接口),由该抽象行为类(接口)派生具体行为类;
主体对象拥有抽象行为类的实例,并且拥有可以设置该抽象行为类的方法,以使用不同的具体行为类替换对象原本的行为,
注意:
抽象主体对象需要拥有一个抽象行为对象,可在具体对象的构造函数中设置默认行为对象。
----------------------------------------------------------------------------------------------------------------
2、观察者模式
概述:
定义对象之间的一对多依赖,对象状况改变可以通知到所有的依赖者。
实质:
主题对象类拥有注册观察者,注销观察者,通知所有观察者三种方法,并维护一个观察者列表;
观察者类拥有一个注册监听方法,该方法设置观察的主题对象类,还拥有一个更新方法供主题对象类调用;
当主题对象更新,则通过观察者列表通知所有已注册的观察者,调用他们的更新方法。
注意:
观察者可注册多个主题对象。
----------------------------------------------------------------------------------------------------------------
3、装饰者模式
概述:
动态地将责任附加到对象上。
实质:
从抽象类中派生出装饰类和被装饰类,以一个被装饰类为主体,可使用多个装饰类装饰它;
装饰类的行为可在被装饰类的行为上增加新的责任(动作)。
注意:
装饰类中有一个抽象类对象,在装饰类的构造函数的参数中设置该抽象类对象为具体类对象(即被装饰对象)。
----------------------------------------------------------------------------------------------------------------
4、工厂方法模式
概述:
定义了一个创建对象的接口,由子类决定实例化的类是哪个,让类把实例化推迟到子类。
实质:
创建一个抽象工厂类,一个抽象产品类;
抽象工厂类包括创造产品的方法以及操作产品的方法,由具体的子类创造具体的产品;
抽象产品类派生各种产品定义相关属性;
注意:
、、、
----------------------------------------------------------------------------------------------------------------
5、抽象工厂模式
概述:
提供一个接口,用于创建相关或依赖对象的家族,而不需要指定具体类。
实质:
抽象工厂包含多个创造抽象产品的方法;
多个抽象产品类共同组成抽象产品族,由其派生出多个具体抽象产品;
具体工厂根据需要生产特定产品。
注意:
、、、
----------------------------------------------------------------------------------------------------------------
6、单件模式
概述:
确保一个类只有一个实例,并提供一个全局访问点。
实质:
将构造函数变成私有,并提供一个公开的方法获得唯一的实例。
注意:
类需拥有一个实例对象并设置为null,如果使用方法访问该对象为null,则new一个唯一的实例对象。
----------------------------------------------------------------------------------------------------------------
7、命令模式
概述:
将请求封装为对象,以便使用不同的请求来参数化其他对象。
实质:
调用者对象拥有设置命令对象的方法和执行命令的方法;
命令接口拥有执行命令的方法;
调用者对象拥有命令对象,并且可以直接调用该命令对象以执行它。
注意:
所有具体命令需要派生自同一个命令接口,并实现该接口的方法。
----------------------------------------------------------------------------------------------------------------
8、适配器模式
概述:
将一个类的接口转换成客户期望的另一个接口。
实质:
一个派生自目标类的适配器,将真实类伪装为目标类,并实现目标类的需要实现的方法。
注意:
适配器中拥有一个真实类的对象,通过构造函数传入。
----------------------------------------------------------------------------------------------------------------
9、外观模式
概述:
提供一个统一的接口,用来访问子系统中的一群接口,外观定义了一个高层接口,让子系统更容易使用。
实质:
使用一个新的函数把其他的函数包装起来。
注意:
、、、
---------------------------------------------------------------------------------------------------------------
10、模版方法模式
概述:
在一个方法中定义一个算法的骨架,将一些步骤延迟到子类中。
实质:
在派生类中实现父类的某些抽象步骤,继承其具体步骤。
注意:
、、、
----------------------------------------------------------------------------------------------------------------