您的位置:首页 > 其它

对代理模式和装饰模式异同点的理解

2015-12-02 10:19 387 查看

相同点

1.被代理类和代理类实现相同接口,被装饰类和装饰类同样实现相同接口。

2.代理类以组合形式持有一个被代理类对象,装饰模式亦是如此。

不同点

1.名称不同。别笑,这真的是一个不同点,规范的命名能够让其他程序员直接了解你的意图,提高代码可读性。通常意义上讲,代理通常是对对象做访问控制,也可以说是限制,而装饰是在已有行为上增添新行为。换言之,我吃了加了樱桃的蛋糕,肯定吃到了蛋糕本身。而我让明星代理给明星传话,他未必会传。

2.概念不同。装饰模式更接近继承的概念,没错,它设计出来确实是为了解决类爆炸问题,也并没有用继承。但是,加了樱桃的蛋糕是蛋糕,加了樱桃又浇了奶油的蛋糕也是蛋糕,它们是is a的关系。而明星代理并不是明星,他只是个传话的。设计模式本身是独立于程序的,我觉得思考设计模式的时候不要马上想到程序的语法和概念,设计模式,更多的是贴近生活场景。

我个人认为,学设计模式,要了解他们的结构和设计动机,这样有助于你更快理解他人的设计。同时又要忘记它们,不要拘泥于任何一种模式,东西学死了就不好用了。只要记得他们的最终目的并不要违背这个就可以。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: