您的位置:首页 > 其它

设计模式之设计原则【后续不断更新】

2011-09-28 11:34 197 查看
我这里只记录我目前知道的原则及自己的理解
1.找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起
个人理解:
比如下面的类,鸭子超类,所有的鸭子子类都继承此超类:
class duck {
function bark() {
echo "嘎嘎的叫";
}

function fly() {
echo "飞行(打比方啊)";
}
function swim(){
echo "会游泳";
}
function display() {
echo "创造出一个鸭子出来";
}
}
鸭子都会叫,有些还会飞,比如鸳鸯鸭。
现在我想创建一只唐老鸭。要求会叫,但不会飞。如果你写个
class tangDuck extends duck{}
很明显,子类会继承父类的所有方法和属性,所以也会飞,就不符合我们的要求了。
在这里,会发生变化的行为是‘飞’和‘叫’这两种行为(可能还会有其他的,不考虑)。比如叫,嘎嘎的叫,吱吱的叫,所以要把这两种变化的行为单独拿出来。

2.针对接口编程,而不是针对实现编程
为什么要针对接口编程呢?
因为接口的功能就是为了展示具体类的方法体系,只声明方法而不实现方法;是一种契约和规范。方便使用类的多态性。
实现同一个接口的子类,都拥有同一个超类型,换句话就是将不同的子类对象都当作一个父类来处理。

为什么不针对实现编程呢?
这样会造成我们在编程中无法方便的扩展业务,不利于后期维护。
3.多用组合,少用继承

4.为交互对象之间的松耦合设计而努力,比如观察者模式

5.对扩展开放,对修改关闭,比如装饰模式
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: