本系列博客主要参考《大话设计模式》和《设计模式:可复用面向对象软件的基础》两本书,也参考了其他博友的博客,如果理解有偏差希望大家指出。
1、单一职责原则(SRP)
就一个类而言,应该仅有一个引起它变化的原因
例如:如果游戏逻辑与界面写在一起则引起变化的原因有两个
2、开放-封闭原则(OCP)
是说软件实体(类、模块、函数等等)应该可以扩展,但是不可修改。
两个特征:一是对于扩展是开放的,二是更改是封闭的(简单工厂模式不符合这个原则,工厂方法符合)
开发封闭原则是面向对象设计的核心所在。
3、依赖倒转原则
(1)高层模块不应该依赖底层模块。两个都应该依赖抽象。
(2)抽象不应该依赖细节。细节应该依赖抽象。
为何叫倒转?面向过程的开发时,为了使得常用代码可以复用,一般都会把这些常用代码写成许许多多库函数,在做新项目的时候去调用这些底层的函数就可以了。比如访问数据库的代码写成函数。这就是高层模块依赖底层模块。
而实质上在做新项目的时候会发现业务逻辑的高层模块都是一样的,但客户希望使用不同的数据库或存储信息方式,这时高层模块与底层的访问数据库绑定在一起,没有办法复用这些高层模块。
4、里氏代换原则(LSP)
子类型必须能够替换掉它们的父类型。正是由于子类型的可替换性才使得使用父类类型的模块在无需修改的情况下就可以扩展。