C#设计模式(2)
2004-08-24 08:44
399 查看
《人月神话》焦油坑、没有银弹
* 软件腐化的原因:
问题所在 设计目标
过于僵硬 可扩展性(新性能可以很容易加入系统)
过于脆弱 灵活性(修改不会波及其它)
复用率低
粘度过高 可插入性(新功能容易加入系统(气囊加入方向盘))
* 提高系统可复用性的几点原则:
传统复用:
1. 代码的粘帖复用
2. 算法的复用
3. 数据结构的复用
* 可维护性与可复用性并不完全一致
* 对可维护性的支持:
Open-Closed Principle原则讲的是:一个软件实体应当对扩展开放,对修改关闭。
优点:
通过扩展已有软件系统,可以提供新的行为,以满足对软件的新的需求,使变化中的软件有一定的适应性和灵活性。
已有软件模块,特别是最重要的抽象层模块不能再修改,这使变化中的软件系统有一定的稳定性和延续性。
例子:玉帝招安美猴王
当年大闹天宫便是美猴王对玉帝的新挑战。美猴王说:"'皇帝轮流做,明年到我家。'只教他搬出去,将天宫让于我!"对于这项挑战,太白金星给玉皇大帝提出的建议是:"降一道招安圣旨,宣上界来…,一则不劳师动众,二则收仙有道也。"
换而言之,不劳师动众、不破坏天规便是"闭",收仙有道便是"开"。招安之道便是玉帝天庭的"开放-封闭"原则。
public class Rectangle
public class Square
using System;
public class Rectangle
public class Square : Rectangle
public class SmartTest
public interface Quadrangle
public class Rectangle : Quadrangle
public class Square : Quadrangle
private long side;
public void setSide(long side)
this.side = side;
}
public long getSide()
return side;
}
public long getWidth()
return getSide();
}
public long getHeight()
return getSide();
}
}
* 软件腐化的原因:
问题所在 设计目标
过于僵硬 可扩展性(新性能可以很容易加入系统)
过于脆弱 灵活性(修改不会波及其它)
复用率低
粘度过高 可插入性(新功能容易加入系统(气囊加入方向盘))
* 提高系统可复用性的几点原则:
传统复用:
1. 代码的粘帖复用
2. 算法的复用
3. 数据结构的复用
* 可维护性与可复用性并不完全一致
* 对可维护性的支持:
一、 "开放-封闭"原则(OCP)
Open-Closed Principle原则讲的是:一个软件实体应当对扩展开放,对修改关闭。优点:
通过扩展已有软件系统,可以提供新的行为,以满足对软件的新的需求,使变化中的软件有一定的适应性和灵活性。
已有软件模块,特别是最重要的抽象层模块不能再修改,这使变化中的软件系统有一定的稳定性和延续性。
例子:玉帝招安美猴王
当年大闹天宫便是美猴王对玉帝的新挑战。美猴王说:"'皇帝轮流做,明年到我家。'只教他搬出去,将天宫让于我!"对于这项挑战,太白金星给玉皇大帝提出的建议是:"降一道招安圣旨,宣上界来…,一则不劳师动众,二则收仙有道也。"
换而言之,不劳师动众、不破坏天规便是"闭",收仙有道便是"开"。招安之道便是玉帝天庭的"开放-封闭"原则。
public class Rectangle
public class Square
using System;
public class Rectangle
public class Square : Rectangle
public class SmartTest
public interface Quadrangle
public class Rectangle : Quadrangle
public class Square : Quadrangle
private long side;
public void setSide(long side)
this.side = side;
}
public long getSide()
return side;
}
public long getWidth()
return getSide();
}
public long getHeight()
return getSide();
}
}
相关文章推荐
- C#设计模式(三)建造着模式
- 给新手朋友 推荐几本书(从C#入门到SQL及设计模式)
- C#设计模式之十八状态模式(State Pattern)【行为型】
- C#设计模式---观察者模式简单例子
- [原创][推荐]C#设计模式-命令模式(POS收银台应用)
- C#设计模式(1)——单例模式
- C#--抽象工厂设计模式--三层框架
- 《模式——工程化实现及扩展》(设计模式C# 版)《中介者模式 Mediator》——“自我检验" 参考答案
- c#设计模式-单例模式(面试题)
- 设计模式C#描述——工厂方法模式
- C# 设计模式 之 抽象工厂模式
- C#设计模式之抽象工厂(AbstractFactory)
- C#设计模式(10)-Adapter Pattern
- C#设计模式:单件模式以及其扩展和思考
- C#设计模式之Factory Method
- c#设计模式- Builder模式(建造者模式)
- C#设计模式总结
- C#设计模式(十八)备忘录模式
- 《模式——工程化实现及扩展》(设计模式C# 版)《模板方法模式 Template》——“自我检验"
- C# 判断是否是在设计模式下有效的方法