1、策略模式
主体主要是添加一个算法的基类,这样就可以通过创建不同的派生类算法,来达到运行时动态改变行为。
优点:主体与算法之间进行解耦,增加算法的可扩展性。
注意:算法不能太依赖于主体的数据,不然,会很麻烦。
2、观察者模式
观察者 关键是要继承统一的监听接口。
通知者 主要是实现:观察者list、添加观察者、删除观察者、通知观察者等接口。
可分为:推送观察者模式,拉取观察者模式。
优点:观察者与通知者之间进行解耦,可以很方便的添加、删除观察者。
3、装饰模式
主要是通过装饰品替换装饰者来改变装饰者的行为。因此,装饰品要与装饰者有相同的接口,添加一个装饰品就返回此装饰品的指针,而此指针中含有一个被装饰者的指针,最终形成一个链表,表头是最后添加的装饰品,表尾是装饰者。
装饰品 包含一个装饰者基类,与装饰者有相同的外部接口。
4、工厂模式
主要是通过创建一个工厂来生产产品,达到解耦用户与产品的生产过程,用户可以通过创建不同的工厂来生产不同的产品。
5、状态模式
主体根据不同的状态,表现出不同的行为。 分析主体拥有的状态及所有状态共有的行为抽象出一个状态基类,把每一种状态及其表现的行为封装成一个状态类,主体拥有所有的状态对象,一个状态基类,以及状态的切换接口。状态类中含有一个主体指针,在执行自己的行为时,根据主体的接口切换状态。
优点:主体与状态的行为进行解耦,在不影响其他状态类的前提下,可以很方便的给主体添加新的状态。
6、单例模式
定义一个私有的构造函数,一个静态的实例化函数,一个静态的指向自己的指针,通过静态实例化函数来动态的创建对象,多次调用时返回已有的对象指针,来达到单例的效果。
7、命令模式
主要是定义命令、命令invoker(调用者)、命令执行者三个对象,命令要有统一的接口,并将命令与命令执行者绑定封装。
执行流程是:客户创建‘命令’并传递给‘命令invoker(调用者)’,‘命令invoker(调用者)’调用‘命令’的统一接口来执行命令。
有点:命令的调用者和执行者进行解耦,在不修改命令调用者的情况下可以很容易的添加新的命令。
主体主要是添加一个算法的基类,这样就可以通过创建不同的派生类算法,来达到运行时动态改变行为。
优点:主体与算法之间进行解耦,增加算法的可扩展性。
注意:算法不能太依赖于主体的数据,不然,会很麻烦。
2、观察者模式
观察者 关键是要继承统一的监听接口。
通知者 主要是实现:观察者list、添加观察者、删除观察者、通知观察者等接口。
可分为:推送观察者模式,拉取观察者模式。
优点:观察者与通知者之间进行解耦,可以很方便的添加、删除观察者。
3、装饰模式
主要是通过装饰品替换装饰者来改变装饰者的行为。因此,装饰品要与装饰者有相同的接口,添加一个装饰品就返回此装饰品的指针,而此指针中含有一个被装饰者的指针,最终形成一个链表,表头是最后添加的装饰品,表尾是装饰者。
装饰品 包含一个装饰者基类,与装饰者有相同的外部接口。
4、工厂模式
主要是通过创建一个工厂来生产产品,达到解耦用户与产品的生产过程,用户可以通过创建不同的工厂来生产不同的产品。
5、状态模式
主体根据不同的状态,表现出不同的行为。 分析主体拥有的状态及所有状态共有的行为抽象出一个状态基类,把每一种状态及其表现的行为封装成一个状态类,主体拥有所有的状态对象,一个状态基类,以及状态的切换接口。状态类中含有一个主体指针,在执行自己的行为时,根据主体的接口切换状态。
优点:主体与状态的行为进行解耦,在不影响其他状态类的前提下,可以很方便的给主体添加新的状态。
6、单例模式
定义一个私有的构造函数,一个静态的实例化函数,一个静态的指向自己的指针,通过静态实例化函数来动态的创建对象,多次调用时返回已有的对象指针,来达到单例的效果。
7、命令模式
主要是定义命令、命令invoker(调用者)、命令执行者三个对象,命令要有统一的接口,并将命令与命令执行者绑定封装。
执行流程是:客户创建‘命令’并传递给‘命令invoker(调用者)’,‘命令invoker(调用者)’调用‘命令’的统一接口来执行命令。
有点:命令的调用者和执行者进行解耦,在不修改命令调用者的情况下可以很容易的添加新的命令。