设计模式
借用百度百科所说:
设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。
使用设计模式的目的就是为了代码可重用性、让代码更容易被他人理解、保证代码可靠性。 设计模式使代码编写真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。
23种设计模式被分为创建型模式、结构型模式和行为型模式三种模式
创建型模式:
·工厂方法模式
·单例模式
·原型模式
对比总结:
·工厂方法模式:为不同子类创建不同工厂;
·抽象工厂模式:为不同系列建造不同工厂;
·单例模式:保证实例唯一;
·建造者模式:为不同类组装出一套相同的方法;
·原型模式:实现深拷贝。
结构型模式
·代理模式
·外观模式
·桥接模式
·享元模式
·组合模式
行为型模式
·职责链模式
·策略模式
·状态模式
·备忘录模式
·命令模式
·中介者模式
·解释器模式
·访问者模式
面向对象设计原则
1、依赖倒置原则(DIP)
·高层模块不应该依赖低层模块,两者都应该依赖其抽象;
·抽象不应该依赖细节;
·细节应该依赖抽象。
2、开放封闭原则(OCP)
·对扩展开放,对更改封闭。
·类模块应该是可扩展的,但是不可修改。
·如何做到:抽象、封装
3、单一职责原则(SRP)
·一个类应该仅有一个引起它变化的原因。
·单一职责适用于接口、类,同时也适用于方法,即一个方法尽可能做一件事情。
4、Liskov替换原则(LSP)
·子类必须完全实现父类的方法
·子类可以有自己的个性。
·覆盖或实现父类的方法时输入参数可以被放大。
·覆写或实现父类的方法时输出结果可以被缩小
即如果父类的一个方法的返回值是一个类型T,子类的相同方法(重载或覆写)的返回值为S,那么里氏替换原则就要求S必须小于等于T,也就是说,要么S和T是同一个类型,要么S是T的子类。
·子类必须能替换掉它们的父类。
5、接口隔离原则(ISP)
·不应该强迫客户程序依赖它们不用的方法。
·类间的依赖关系应该建立在最小的接口上。。
·即建立单一接口,不要建立臃肿的接口,接口应该尽量细化。
6、最小知道原则(迪米特原则)
·一个类应该对自己需要耦合或调用的类知道得最少,使得系统功能模块相对独立。
·一个模块的修改尽量,尽量少的影响其他模块。
·迪米特法则要求类尽量不要对外公布太多的public方法和非静态的public变量,尽量内敛,多使用private、package-private、protected等访问权限。
7、组合/聚合复用原则
·类继承通常为“白箱复用”,对象组合通常为“黑箱复用” 。
·继承在某种程度上破坏了封装性,子类父类耦合度高。
·而对象组合则只要求被组合的对象具有良好定义的接口,耦合度低。
`如:代理模式、装饰模式、适配器模式等