装饰器模式
1. 介绍¶
装饰器模式(Decorator Pattern),动态地给一个对象添加一些额外的职责,就增加功能来说,装饰器模式比生成子类更灵活。
适用场景
- 运行时,你需要动态地为对象增加额外职责时;
- 当你需要一个能够代替子类的类,借助它提供额外方法时。
Decorate.class
package com.cmz.decorate; /** * @author summer * @create 2020-03-06 12:10 * 实现放大器对声音的功能 */ public class Decorate { public static void main(String[] args) { Person p = new Person(); p.say(); //装饰 Amplifer am = new Amplifer(p); am.say(); } } interface Say{ void say(); } class Person implements Say{ //属性 private int voice = 10; @Override public void say() { System.out.println("人的声音大小为: " + this.voice); } public int getVoice() { return voice; } public void setVoice(int voice) { this.voice = voice; } } //放大器 class Amplifer implements Say{ private Person person; Amplifer(Person person){ this.person = person; } @Override public void say() { System.out.println("扩音后人的声音大小为: " + person.getVoice()*100); System.out.println("我是新装饰的功能"); } }
运行结果
人的声音大小为: 10 扩音后人的声音大小为: 1000 我是新装饰的功能