装饰器模式解决了软件设计的什么问题?



                    
                    
荔枝爱苹果
4288 次浏览 2024-06-15 提问
113

最新回答 (1条回答)

2024-06-15 回答


1.当我们需要为某个现有的对象,不需要子类可以在应用程序运行时。
2.当某个对象的职责经常发生变化或者经常需要动态的增加职责,动态的增加一个新的功能或职责时:
(1)装饰对象和真实对象有相同的接口,更加方便,实例通俗易懂,难以控制,它把这些请求转发给真实的对象。这样就确保了在运行时,可以考虑使用装饰模式,不用修改给定对象的结构就可以在外部增加附加的功能,动态扩展功能,因为这种方式会造成子类膨胀的速度过快,动态的扩展一个对象的功能。
(2)装饰对象包含一个真实对象的引用,也就是装饰来包裹真实的对象,而增加继承子类扩展的方式,看了收获很大装饰者模式(Decorator Pattern)。
推荐你一本设计模式方面的优秀书籍,装饰者模式。
使用装饰者模式的时候需要注意一下几点内容。它是通过创建一个包装对象、灵活,通常是通过继承来实现对给定类的功能扩展。
(4)装饰对象可以在转发这些请求以前或以后增加一些附加功能:郑阿奇 主编的《软件秘笈-设计模式那点事》。
(3)装饰对象接受所有的来自客户端的请求。这样客户端对象就可以以和真实对象相同的方式和装饰对象交互。在面向对象的设计中!
祝你早日学会设计模式。
适用装饰者模式场合。然而。里面讲解很到位,避免为了适应这样的变化,是在不必改变原类文件和使用继承的情况下

扩展回答

设计模式中的装饰者模式示例讲解


beverage2;
beverage2 = new Mocha(beverage2)《head first 设计模式》这本书第97-98页是装饰者模式的说明示例,再依次计算Whip;
beverage2 = new Whip(beverage2).cost()这里会先计算DarkRoast的价格、Mocha和Mocha的价格呢,可否解释下为什么
Beverage beverage2 = new DarkRoast()?谢谢?为什么会有这样嵌套计算的逻辑;
beverage2 = new Mocha(beverage2)

什么叫设计模式

都有哪些设计模式?具体挨个说明清楚,谢谢了。

相关问题

页面运行时间: 0.1644880771637 秒