首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

里氏轮换原则在装饰模式中的体现

2012-10-08 
里氏替换原则在装饰模式中的体现???? 今天继续学习CBF4LIFE的设计模式,看到了第13章-----装饰模式。以前看t

里氏替换原则在装饰模式中的体现

???? 今天继续学习CBF4LIFE的设计模式,看到了第13章-----装饰模式。以前看thinking in Java中IO部分,讲到IO管道之间的套接时,作者就说到了此处运用到了装饰模式,当时没太留意什么装饰模式到底是个啥玩意,今天再次接触到它,以免以后忘记了,还是写下来为妙啊。

????CBF4LIFE中装饰模式中,举到的“修饰”成绩单的例子很是经典,在这里,我也就照搬啦(故事情节太长,这里主要是看里氏替换原则使用,在此就不用祥讲了)。

??????先定义抽象的学生成绩单

????

?

? 拿回家给老爸签名

?

这次考试语文最高分75,数学78,自然80尊敬的XXX家长: ...... 语文 62 数学65 体育 98 自然 63 ....... 家长签名: 我这次排名38----家长签名为:爸爸

?

?以高兴,爽快的签了名。嘿嘿,我理解的运用到的里氏替换原则在Father类注释也说明了。

?

?

?

?

?

1 楼 空谷悠悠 2010-07-09   作者在讲到装饰模式有一个非常好的优点时,就提到了扩展性非常好。而又提到了Java编程中,子类父类的层次结构最好不要超过2层,这一点好理解,但是装饰模式不也同样采用是通过继承来扩展功能吗?假如功能多了,子类父类的层次结构不同样会复杂吗?为何不使用桥梁模式呢?开始接触装饰模式时,我就抱着深深的怀疑的态度看着它,通过这个例子,最后总算弄明白了。
这里我们在修饰schoolReport时,并没有直接继承SchoolReport类,而是通Decorator修饰类来包装SchoolReport,假如我们要添加功能如显示最高成绩,我们可以继承Decorator生成HighScoreDecorator,然后包装SchoolReport,再继续增加功能如排名,我们同样在Decorator基础上派生出SortDecorator类,来包装SchoolReport。你会发现,不管我们增加多少功能,这些派生出来的类都是Decorator的子类,整个层次结构并为增加,这样为以后的维护也方便多了

热点排行