单一功能原则
一个类有且只有一个职责(为了同一个目的),把东西分到不能再分。
开闭原则
对扩展开放,对修改关闭。
要修改外观,只需要换件衣服就可以了,不需要把自己的皮肤给弄掉
关键是把不变的东西抽象出来
里氏替换原则
子类型必须能够替换他们的基类
鸟类,大雁继承OK,鸵鸟继承NO,no fly。违反替换规则,应该将鸟类分为飞鸟和不飞鸟,然后再继承
不遵守的话:
1.继承混乱,若子类作为参数传递进基类的函数,后果难以推测
2.基于父类编写的单元测试代码无法成功用于子类
接口隔离原则
用户不应该被迫依赖她们不适用的接口。
过于胖的接口复用性差,复杂度高,可维护性差。
将胖接口拆分
IBIRD(WALK,EAT,FLY)==>
IBIRD(WALK,EAT)=>IFLYBIRD(FLY)
依赖倒置原则
高层次模块不应该依赖于低层次的模块,而是都应该依赖于它们的抽象层。
抽象层==> 标准/规范
是一个“可插拔”的系统
汽车依赖于引擎或轮胎的规范而非具体的某一款。否则,发生故障只能找相应的引擎或轮胎替换,否则就会报废
总结
设计模式是常用的面相对象设计的方法,归纳总结出来的,是一种包含关系。
设计模式则是这些原则在某些特定和常用条件下的应用,并且做了一些标准化