设计模式的定义:
模式是在某种情境下,针对某问题的某种解决方案。
这里面关键的就是问题,情境,解决方案
模式应该是可以重复利用的。
面向对象设计的原则:
封装变化
找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混合在一起。
如果新的需求过来,都会使某方面的代码发生变化,那么你就可以确定,这部分代码需要被抽离出来,和其他稳定的部分有所区别。这样一来,以后新的需求过来
就可以轻易地只改动或者扩充这个部分,而不影响其他不需要变化的部分。
多用组合,少用继承
1、子类对父类的继承式全部的公有或受保护的继承,这样的话子类可能继承了对子类无用或者有害的父类。也就是说可能子类并不想要父类的方法怎么办(例如矩形和正方形)
2、继承的子类实际上是运行时就确定下来了,满足不了运行时确定下来的要求,运用组合可以非常灵活,可以在运行时才决定某个对象。
针对接口编程,而不要针对实现编程
一个简单的例子,比如ICDComm的接口发送消息和接受消息。
为交互对象之间的松耦合设计而努力
这样我们可以建立有弹性的OO系统,能够应对变化,因为对象之间的依赖程度降到了最低。
类应该对扩展开放,对修改关闭(开闭原则)
我们的目标就是允许类更容易扩展,在不修改现有代码的情况下,就可以适配新的行为。这样就可以使用更多改变,可以接受改变来应对新的需求。
依赖抽象,而不依赖具体类(依赖倒置原则)
依赖倒置原则中的倒置是指和一般的OO设计的思考方式完全相反。高层和底层的实现都依赖相同的抽象。
只和朋友交谈
别找我,我会去找你
类应该只有一个改变的理由
抽象工厂的任务是定义一个负责创建一组产品的接口,这个接口内的每个方法多可以创建一个具体的产品,同时我们利用实现抽象工厂的子类来提供这些具体的做法。所以在
抽象工厂中利用工厂方法实现生产方法是很自然的。
简单工厂主要是为了解耦,针对接口编程而不是针对实现编程。