0
点赞
收藏
分享

微信扫一扫

设计模式:装饰者模式

快乐小鱼儿_9911 2022-03-30 阅读 56
java

装饰者模式:在原有类的基础上添加增强功能

//人接口
interface Human {
    void run();

    void walk();
}

//被装饰类Man
class Man implements Human {
    @Override
    public void run() {
        System.out.println("man can run");
    }

    @Override
    public void walk() {
        System.out.println("man can walk");
    }
}

//装饰抽象类
abstract class AbstractDecorate implements Human {
    Human human;//human引用

    public AbstractDecorate(Human human) {
        this.human = human;
    }

    @Override
    public void run() {
        human.run();
    }

    @Override
    public void walk() {
        human.walk();
    }
}

//Man抽象装饰实现类
class ManDecorate extends AbstractDecorate {
    public ManDecorate(Human human) {
        super(human);
    }

    //装饰着增强功能
    public void speak() {
        System.out.println("man can speak");
    }

    //装饰着增强功能
    public void work(){
        System.out.println("man can work");
    }

    @Override
    public void run() {
        super.run();
        speak();//调用增强功能
    }

    @Override
    public void walk() {
        super.walk();
        work();//调用增强功能
    }
}

//客户端代码
class Client{
    public static void main(String[] args) {
        Human man = new Man();//实现有参构造使用接口引用
        ManDecorate manDecorate = new ManDecorate(man);
        
        //调用增强类的方法
        manDecorate.run();
        manDecorate.walk();
    }
}

参考博文:https://blog.csdn.net/pihailailou/article/details/82813374

举报

相关推荐

0 条评论