参考答案
一、装饰器模式的概念
装饰器模式是指动态地给一个对象增加一些额外的功能,同时又不改变其结构。
二、装饰器模式的优点
装饰器模式的优点是装饰类和被装饰类可以独立发展,不会相互耦合,装饰模式是继承的一个替代模式,装饰模式可以动态扩展一个实现类的功能。
装饰器模式的关键,是在装饰器中使用了被装饰的对象。
例如,创建一个对象“laowang”,给对象添加不同的装饰,穿上夹克、戴上帽子……,这个执行过程就是装饰者模式,实现代码如下。
1. 定义顶层对象,定义行为
interface IPerson { void show(); }
2. 定义装饰器超类
class DecoratorBase implements IPerson{ IPerson iPerson; public DecoratorBase(IPerson iPerson){ this.iPerson = iPerson; } @Override public void show() { iPerson.show(); } }
3. 定义具体装饰器
class Jacket extends DecoratorBase { public Jacket(IPerson iPerson) { super(iPerson); } @Override public void show() { // 执行已有功能 iPerson.show(); // 定义新行为 System.out.println("穿上夹克"); } } class Hat extends DecoratorBase { public Hat(IPerson iPerson) { super(iPerson); } @Override public void show() { // 执行已有功能 iPerson.show(); // 定义新行为 System.out.println("戴上帽子"); } }
4. 定义具体对象
class LaoWang implements IPerson{ @Override public void show() { System.out.println("什么都没穿"); } }
5. 装饰器模式调用
public class DecoratorTest { public static void main(String[] args) { LaoWang laoWang = new LaoWang(); Jacket jacket = new Jacket(laoWang); Hat hat = new Hat(jacket); hat.show(); } }
以上,是Java面试题【什么是装饰器模式,以及优点】的参考答案。
输出,是最好的学习方法。
欢迎在评论区留下你的问题、笔记或知识点补充~
—end—