一、创建模式:简单工厂模式、抽象工厂模式、单列模式、原型模式;
1、简单工厂,一个方法、多个方法、多个静态方法;
2、抽象工厂:一个工厂类包含了一个产品族;
3、单例模式
4、原型模式:原型复制,浅复制(复合对象复制引用)、深复制;
二、结构模式:适配器模式、装饰模式、代理模式、门面模式、桥接模式、享元模式
1、适配器模式:将一个接口适配为用户期望的另一个接口,以消除接口的不兼容问题
(1)针对类的适配器模式:将一个类适配为一个接口,采用继承类的方式
(2)针对对象的适配器模式:将一个对象适配到一个接口,采用聚合的方式
(3)针对接口的适配器模式:通过提供一个抽象类,对一个接口中的多个方法提供默认实现,用户继承时直接继承抽象类,然后只需要实现自己所关心的方法
2、装饰模式:动态的增强或扩展一个类
原始类和装饰类实现共同的一个接口,同时装饰类拥有一个原始类的实例
3、代理模式:用于对原有方法进行改进,uml结构与装饰模式一样;
4、门面模式:为了解决类与类之间的依赖关系,将这些关系放入到门面类中进行管理,以降低类之间的耦合关系;
5、桥接模式:将接口和实现分开,然后使用一个桥接类(bridge)将接口聚合起来,不同客户提供不同的实现;
6、享元模式:实现对象的共享即共享池(如数据库连接池,线程池),用于对象的创建开销大,并且需要大量对象的情况,常与工厂模式配合使用,将共享属性封装在工厂内部,可变属性通过参数的方式传递;
三、关系模式:父类与之类之间(2种)、两个类之间(6种)、类的状态(2种)、通过中间类(3种)
1、父类与子类:策略模式、模板方法模式
(1)策略模式:将多个算法封装起来,提供不同的算法策略
提供一个接口封装算法,可以提供一个抽象类(抽象类可以提供一些默认实现或者辅助的工具方法),不同实现类提供不同的算法实现,用户决定选用具体的算法实现;
(2)模板方法模式:在一个抽象类中定义一个模板方法,在定义多个实现方法或抽象方法,子类实现这些抽象方法,通过调用抽象类的模板方法调用子类的具体实现;
2、类之间的关系:观察者模式、迭代子模式、责任链模式
(1)观察者模式:即事件订阅模式,当一个对象(主题)的状态发生变化时会通知注册到该对象的观察者对象,观察者对象随之更改;
主题对象:提供增加删除观察者的管理方法,提供通知方法对注册到该主题对象的观察者列表进行通知;
(2)迭代子模式:顺序访问聚集的对象;
(3)责任链模式:有多个对象,每个对象持有下一个对象的引用,这样就会形成一个链(或环、树),用户请求在这条链上传递知道某个对象决定处理该请求;
(4)命令模式:通过提供一个命令接口,实现命令发送者和命令执行者之间的解耦,命令接口的实现类持有命令执行者的引用;