个人网站:smartpig612.club 微信公众号:SmartPig
阅读本篇文章大约花费您8-10分钟
装饰者模式的定义:动态的将责任附加到对象身上,若要扩展功能,装饰者提供了比继承更有弹性的替代方案。
了解装饰者模式
装饰者模式的定义:动态的将责任附加到对象身上,若要扩展功能,装饰者提供了比继承更有弹性的替代方案。
在定义在提到了几个关键点:
- 动态附加
- 扩展功能
- 比继承更优
由此让我们深入理解这个神奇的模式!
深入理解装饰者模式
从名称或许可以看出一些端倪,该模式主要的功能就是装饰,换句话说,就是要为原对象穿几件不同的衣服,但是并不会影响原对象本身的功能,所以叫做扩展功能,而不是改变功能。
使用继承进行面向对象编程或许是个好主意,但是通常会因为子类覆盖了父类的方法而导致功能的改变,有时我们并不需要这种改变。
比如在学习的过程中我们需要买一些书籍,那首先需要为书本创建一个共同的类Book,这不是什么难事,过程非常简单。
public abstract class Book {
protected String description;
/**
* 获得书本的描述信息
* @return
*/
public String getDescription() {
return description;
}
/**
* 抽象方法,子类必须实现
* @return 书本的价格
*/
public abstract int price();
}
目前正在学习设计模式,决定买一本《Head First设计模式》,那么需要创建这本书的类,继承自Book,并且在构造方法中改变描述信息,这样通过getDescription()获取这本书的有关信息,假设这本书只卖人民币50元
public class HeadFirstDesignPattern extends Book {
public HeadFirstDesignPattern() {
description="《Head First 设计模式》";
}
@Override
public int pri