设计模式六大原则:

1.开闭原则:对扩展开放,对修改关闭
2.单一职责原则:每个类实现单一职责,否则应将类拆分,
3.里氏替换原则:子类对父类的方法应尽量不要重写和重载
4.依赖倒转原则:依赖于抽象而不依赖于具体,写代码用到具体的类时,不与具体类交互,而与具体类的上层接口交互
5.接口隔离原则:每个接口中不存在子类用不到却必须实现的方法,否则,应将接口拆分成多个隔离的接口
6.迪米特法则:类可以出现在成员变量、方法参数、方法返回值中,不应出现在局部变量、临时变量中
7.合成复用原则:尽量优先使用 合成/聚合 的方式,而不是使用继承

设计模式:

创建模式start****
一、简单工厂:(类创建依赖工厂,若要拓展则要修改工厂类,违背了开闭原则)
普通:方法中携带类型参数,通过参数来判断工厂生产实例(不足:无相应参数时会有问题)
多个方法:每个方法生产一种实例
多个静态方法:同多个方法,不需要创建对象
二、
1.工厂方法模式:创建一个工厂接口和多个工厂的实现类,拓展方便
2.抽象工厂模式:?抽象工厂类似现实工厂,而工厂方法则像是工厂的一种产品生产线
三、单例模式(Singleton):
四、创造者模式(Builder):
五、原型模式(Prototype):将一个对象作为原型,对其进行复制、克隆,产生一个和原对象类似的新对象,复制对象通过clone()实现的
实现:实现Cloneable接口,覆写clone方法
浅复制:复制对象,基本数据类型的变量都会重新创建,而引用数据类型指向的还是原对象所指向的,复制不彻底
深复制:复制对象,不论是基本数据类型还是引用数据类型都会重新创建,彻底复制
创建模式end****

结构模式start****
六、适配器模式(Adapter):消除接口不匹配带来的兼容性问题
1.类适配器:接口想调用某类的一个方法,接口的实现类继承该类(即继承类实现接口)
2.对象适配器:类似类适配器,不继承类,而是引入该类的实例
3.接口适配器:只需要接口中的部分方法,实现接口就比较浪费,借助一个抽象类实现该接口,空实现所有的方法,继承该抽象类,重写需要的方法
七、装饰器模式(Decorator):装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例,可以给被装饰对象动态添加一些功能(缺点:产生多个相似的对象,不易排错!)
应用场景:
1.扩展一个类的功能
2.动态的为个对象增加功能,而且还能动态的撤销。(继承不能做到这一点,继承的功能是静态的,不能动态的增删。)
八、代理模式(Proxy):采用代理类调用原类的方法,并且可以对产生的结果控制
九、外观模式(Facede):
十、桥接模式(Bridge):将抽象化和实例化解耦,使得二者可以独立变化
十一、组合模式(Composite):适合处理树形结构的问题
十二、享元模式(Flyweight):实现对象资源的共享,即共享池

结构模式end****


关系模式start****
第一类:父类与子类(策略、模板方法)
第二类:两个类之间(观察者、迭代子模式、责任链、命令)
第三类:类的状态(备忘录、状态)
第四类:通过中间类(访问者、中介者、解释器)
十三、策略模式(strategy):定义一系列的算法,并将每个算法封装起来,是他们可以相互的替换,并且算法的变化不会影响到使用,设计接口,为算法提供统一的方法,设计抽像类(可有可无,作为辅助),提供辅助函数。策略模式的决定权在用户
十四、模板方法模式(Template Method)
十五、观察者模式(Observer):当一个对象变化,其他依赖该对象的对象都会收到通知,并且随之变化
十六、迭代子模式(Iterator):按顺序访问聚集中的对象
十七、责任链模式(Chain of Responsibility):
十八、命令模式:
十九、备忘录模式
二十、状态模式:当状态改变时,同时改变其行为
二十一、访问者模式:
二十二、中介者模式:
二十三、解释器模式:
关系模式end****