装饰器模式

Updated on in 程序人生 with 0 views and 0 comments

1、简介

装饰器模式可以实现动态的给一个类添加新的职责。当然也可也通过子类来实现这一操作,但是这样的话,子类就会继承父类的方法和属性,当父类的发生改变,会影响到子类。装饰器模式会产生很多子类,后期难以维护。

2、抽象组件

public interface User {
    public void sayHello();
}

3、具体抽象组件

public class Student implements User {
    @Override
    public void sayHello() {
        System.out.println("我是student");
    }
}

4、装饰角色

public abstract class UserDecorator implements User {
    private User user;
    public UserDecorator(User user){
        this.user = user;
    }
    @Override
    public void sayHello() {
        user.sayHello();
    }
  
    public abstract void sayGoodBye();
}

5、具体装饰角色

public class StudentDecorator extends UserDecorator {
    public StudentDecorator(User user) {
        super(user);
    }

    @Override
    public void sayGoodBye() {
        System.out.println("再见");
    }
}

6、测试

public class TestDecorator {
    public static void main(String[] args){
        User user = new Student();
        UserDecorator userDecorator = new StudentDecorator(user);
        userDecorator.sayHello();
        userDecorator.sayGoodBye();
    }
}

标题:装饰器模式
作者:wenyl
地址:http://www.wenyoulong.com/articles/2020/12/24/1608786225012.html