设计模式六大原则
1.开放封闭原则:对扩展开放,对修改封闭,意即程序拓展时不要动原有的代码
2.LSP原则:任何基类可以出现的地方,子类一定可以出现
3.依赖倒置原则:使用接口,依赖于抽象而不是具体
4.接口隔离原则:为了解耦,
5.迪米特法则:一个实体应当尽量少地与其他实体之间发生相互作用,使得系统功能模块相对独立。
6.CRP法则:尽量使用合成/聚合的方式,而不是使用继承。
分类
1.创建型模式(在创建对象的过程中尽量隐藏创建细节,不直接使用new)
- 工厂模式(Factory Pattern)
- 抽象工厂模式(Abstract Factory Pattern)
- 单例模式(Singleton Pattern)
- 建造者模式(Builder Pattern)
- 原型模式(Prototype Pattern)
2.结构型模式(主要关注类和对象的继承、组合)
- 适配器模式(Adapter Pattern)
- 桥接模式(Bridge Pattern)
- 过滤器模式(Filter、Criteria Pattern)
- 组合模式(Composite Pattern)
- 装饰器模式(Decorator Pattern)
- 外观模式(Facade Pattern)
- 享元模式(Flyweight Pattern)
- 代理模式(Proxy Pattern)
3.行为型模式(关注对象之间的通信)
- 责任链模式(Chain of Responsibility Pattern)
- 命令模式(Command Pattern)
- 解释器模式(Interpreter Pattern)
- 迭代器模式(Iterator Pattern)
- 中介者模式(Mediator Pattern)
- 备忘录模式(Memento Pattern)
- 观察者模式(Observer Pattern)
- 状态模式(State Pattern)
- 空对象模式(Null Object Pattern)
- 策略模式(Strategy Pattern)
- 模板模式(Template Pattern)
- 访问者模式(Visitor Pattern)
工厂模式
现在要创建一些对象,他们都实现了某个接口或者继承了某个类。我们不在需要的时候使用new操作符,而是把创建的操作让一个“工厂类”完成,我们在需要新对象时只需要把需要的东西的名字以参数形式传递给工厂类就行了,而不用去管怎么创建的。
抽象工厂模式
在工厂模式中,一个工厂类只生产实现某个接口或者继承了某个类的对象,也就是具体工厂生产具体对象,如果建立一个抽象工厂类和若干个具体工厂,每个具体工厂负责产生一类对象,就成了抽象工厂模式。就是一个抽象工厂类可以生产多种类型的对象,具体每种类型的对象怎么生成,要用一个专门的工厂类来决定。
单例模式
一个类,他虽然有构造方法,但是把它设定为private,不能被外界使用。这个类只存在一个实例,保存在这个类自己的一个静态字段里,如果要用这个类的实例属性、实例方法,都通过这个静态字段访问这个唯一的实例来实现。
建造者模式
现在要创建一个很复杂的对象,我们把这个工作分开来做,先定义并实现一个建造者类,在这个类中实现构建这个对象所需要的全部方法。再定义并实现一个导演类,把一个建造者类传给它,让它负责这些方法调用的逻辑次序和对象的组合,然后统一给客户端返回一个生成好的复杂对象。
原型模式
已经有了一个对象了,我们创建对象时直接复制它,不需要新建了。