以文本方式查看主题

-  计算机科学论坛  (http://bbs.xml.org.cn/index.asp)
--  『 C/C++编程思想 』  (http://bbs.xml.org.cn/list.asp?boardid=61)
----  开闭原则浅析[为本版原创,不得转载]  (http://bbs.xml.org.cn/dispbbs.asp?boardid=61&rootid=&id=25426)


--  作者:pennyliang
--  发布时间:12/14/2005 4:18:00 PM

--  开闭原则浅析[为本版原创,不得转载]
开闭原则最早由Bertrand meyer提出

通俗的理解,就是模块设计既要照顾老客户,也能接纳新客户或老客户新
需求.

第一级别:继承如果满足Liskov原则那么它可以替换父类,即保证封闭性,又实现扩展.
但是这种开闭原则比较初级,这里只需要继承的机制。

第二级别:考虑到imformatioin hiding,公开的部分是稳定的,而实现是多样化的,这样
就需要抽象的机制,可以参考strategy模式,一个抽象的行为(或算法),由多种实现来支持,那么只要抽象的部分不变,那么变化impement的部分,仍然可以保证修改的封闭性,那么考虑到如果一个抽象由多个实现,现在要对这个抽象进行扩展已支持更多的新用户,请参考decarator模式,通过聚合来模拟继承,去掉了类爆炸的危险,这样就实现了可扩展。这个级别需要抽象的机制

第三个级别:考虑AOP,即面向方面的原则,在任何需要扩展的时候,都可以通过weav into的方法,插入到某个模块中,这种机制是静态的,由一些语言提供,例如aspectj,这个级别
是目前最高级别,彻底解决了面向对象中decrator模式ugly的一面。



W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
46.875ms