前言
Android的设计模式系列文章介绍,欢迎关注,持续更新中:
Android的设计模式-设计模式的六大原则
创建型模式:
Android的设计模式-单例模式
Android的设计模式-建造者模式
Android的设计模式-工厂方法模式
Android的设计模式-简单工厂模式
Android的设计模式-抽象工厂模式
Android的设计模式-原型模式
行为型模式:
Android的设计模式-策略模式
Android的设计模式-状态模式
Android的设计模式-责任链模式
Android的设计模式-观察者模式
Android的设计模式-模板方法模式
Android的设计模式-迭代器模式
Android的设计模式-备忘录模式
Android的设计模式-访问者模式
Android的设计模式-中介者模式
Android的设计模式-解释器模式
Android的设计模式-命令模式
结构型模式:
Android的设计模式-代理模式
Android的设计模式-组合模式
Android的设计模式-适配器模式
Android的设计模式-装饰者模式
Android的设计模式-享元模式
1.定义
动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比生成子类更为灵活。
2.介绍
- 装饰者模式属于结构型模式。
- 装饰者模式在生活中应用实际上也非常广泛,一如一间房,放上厨具,它就是厨房;放上床,就是卧室。
- 通常我们扩展类的功能是通过继承的方式来实现,但是装饰者模式是通过组合的方式来实现,这是继承的替代方案之一。
3.UML类图
角色说明:
- Component(抽象组件):接口或者抽象类,被装饰的最原始的对象。具体组件与抽象装饰角色的父类。
- ConcreteComponent(具体组件):实现抽象组件的接口。
- Decorator(抽象装饰角色):一般是抽象类,抽象组件的子类,同时持有一个被装饰者的引用,用来调用被装饰者的方法;同时可以给被装饰者增加新的职责。
- ConcreteDecorator(具体装饰类):抽象装饰角色的具体实现。
4.实现
就以装修房间为例子
4.1 创建抽象组件
这里是一个抽象房子类,定义一个装修的方法:
public abstract class Room {
public abstract void fitment();//装修方法
}
4.2 创建具体组件
现在有一间新房子,已经装上了电:
public class NewRoom extends Room {
//继承Room
@Override
public void fitment() {
System.out.println("这是一间新房:装上电")