1 单一职责:一个类,仅有一个引起它变化的原因;
若一个类有多于一个的职责,应考虑将类的职责分离;
俄罗斯方块游戏设计:将界面表示逻辑和游戏逻辑两者分离;
游戏逻辑:数组的每一项值发生变化,下落、旋转、碰撞判断、移动、堆积对应数组项值的变化;
界面表示逻辑:根据数组的数据进行绘制和擦除,或根据键盘调用数组的相应方法进行改变;
2 开放封闭原则:对于拓展是开放的,对于更改是封闭的;它是面向对象设计的核心所在。
设计软件要容易维护又不容易出问题的方法就是:多拓展少修改;
软件开发人员应该对一个模块中最有可能发生(需要进行预测)的变化种类进行构造抽象以隔离这些变化;
简单工厂模式举例:通过继承、多态来隔离加法、减法与client耦合;
总结:面对需求,对程序的改动是通过增加新代码进行的,而不是更改现有的代码。
3 依赖倒置原则,即:面向接口编程,而不要针对实现编程
具体阐述:高层模块不应该依赖于低层模块,两者都应该依赖抽象;
抽象不应该依赖于细节,细节应该依赖于抽象;
3.1 里氏代换原则:子类型必须能够替换掉它的父类型;
继承中,子类继承了父类,子类可以以父类的身份出现;由于面向对象设计中,子类继承有父类的所有非private的行为和属性,所以在编程世界里,企鹅(不会飞)是不能继承鸟类(会飞)的。
面向过程设计的关键词:程序中所有的依赖关系都是终止于接口或抽象类;