装饰模式
装饰模式
装饰模式又名包装模式,装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。
在装饰模式中的角色有:
- public interface TheGreatestSage {
- public void move();
- }
具体构件角色:
- public class Monkey implements TheGreatestSage {
- @Override
- public void move() {
- //代码
- System.out.println("Monkey Move");
- }
- }
具体构件角色“大圣本尊”猴孙类;
- public class Monkey implements TheGreatestSage {
- @Override
- public void move() {
- //代码
- System.out.println("Monkey Move");
- }
- }
- public class Change implements TheGreatestSage {
- private TheGreatestSage sage;
- public Change(TheGreatestSage sage){
- this.sage = sage;
- }
- @Override
- public void move() {
- // 代码 sage.move();
- }
- }
- public class Fish extends Change {
- public Fish(TheGreatestSage sage) {
- super(sage);
- }
- @Override
- public void move() {
- // 代码
- System.out.println("Fish Move");
- }
- }
具体装饰角色“鸟儿”
- public class Bird extends Change {
- public Bird(TheGreatestSage sage) {
- super(sage);
- }
- @Override
- public void move() {
- // 代码
- System.out.println("Bird Move");
- }
- }
客户端类
- public class Client {
- public static void main(String[] args) {
- TheGreatestSage sage = new Monkey();
- // 第一种写法
- TheGreatestSage bird = new Bird(sage);
- TheGreatestSage fish = new Fish(bird);
- // 第二种写法
- //TheGreatestSage fish = new Fish(new Bird(sage)); fish.move();
- }
- }