设计模式分为三类???——》
创建型模式???——》工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式;
结构型模式???——》适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式;
行为型模式???——》策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式;
是不是看了上面也看不懂,所以我们需要一些比较好记的故事模式来记:
创建型(5个):一个人(单例模式)根据一个工厂(工厂方法模式)的原型(原型模式)创建了(建造者模式)另一个工厂(抽象工厂模式);
结构型(7个):小明代替(代理模式)小雷去跟小红约会,约会的地点是桥头(桥接模式)看烟花,小明需要通过衬衣、裤子、皮鞋搭配的一套衣服(组合模式)来装扮(装饰模式)成小雷的模样(外观模式),并且模仿适配(适配器模式)小雷的行为,最后他们很享受这次的约会(享元模式);
行为型(11个):一个观察者(观察者模式)在电脑上发现了可疑的访问者(访问者模式),需要一个中介者(中介者模式)通过一连串(职责链模式)的算法策略(策略模式)进行循环迭代(迭代器模式)来解释(解释器模式)这条命令(命令模式)知道访问者的状态(状态模式),记录(备忘录模式)下来形成模板(模板方法);
特殊的模式???——》并发型模式、线程池模式;
设计模式的六大原则???——》总原则:开闭原则、单一职责原则、里氏替换原则、依赖倒转原则、接口隔离原则、迪米特法则、合成复用原则;(单一的里氏接口,其开闭依赖于迪米特的合成复用形式;)
“总原则:开闭原则”???——》能扩展为开放,不能修改为封闭;
注意:为了使程序的扩展性好,易于维护和升级;???——》使用接口和抽象类;
单一职责原则???——》不要存在多于一个导致类变更的原因???——》每个类应该实现单一的职责,否则就应该把类拆分
里氏替换原则???——》任何基类可以出现的地方,子类一定可以出现;
特点:
- 是继承复用的基石;???——》衍生类可以替换基类,且软件单位的功能不受到影响;而衍生类也能够在基类的基础上增加新的行为;
- 对“开-闭”原则的补充;???——》对抽象化实现具体的步骤规范;???——》基类与子类的继承关系就是抽象化的具体实现;
- 实现“开闭”原则的关键步骤就是抽象化;
- 子类对父类的方法尽量不要重写和重载???——》“父类”代表了定义好的结构,并通过这个规范的接口与外界交互;
- 重写、重载???——》破坏父类的结构;
依赖倒转原则???——》面向接口编程,依赖于抽象而不依赖于具体;
注意:写代码时用到具体类时,但不和具体类交互,而是和具体类的上层接口交互;
接口隔离原则???——》每个接口中不存在子类用不到,却必须要实现的方法;如果不然,就要将接口拆分;
注意:使用多个隔离的接口,比使用单个接口要好;
单个接口???——》多个接口方法集合到一个的接口;
迪米特法则(最少知道原则)???——》一个类对自己依赖的类知道的越少越好;
注意:
- 被依赖的类发生变化时,如何最小的影响依赖的类???——》将逻辑封装在方法的内部,通过public方法提供给外部;
- 最少知道原则的另一个表达方式;???——》只与直接的朋友通信;
- 朋友关系???——》类之间有耦合关系;
- 直接朋友???——》成员变量、方法参数、方法返回值中的类;
- 不是直接的朋友???——》局部变量、临时变量;???——》我们要求陌生的类不要作为局部变量出现在类中;