装饰者模式

使用步骤

  1. 装饰者和被装饰者实现同一个接口或者继承同一个类
  2. 装饰者中要有被装饰者的引用
  3. 对需要增强的方法进行加强
  4. 对不需要加强的方法调用原来的方法

实现代码:

package com.itest;
//实现同一个Car接口
public interface Car {
    void run();
    void stop();
}

被装饰者QQ车的实现:

package com.itest;

public class QQ implements Car{

    @Override
    public void run() {
        System.out.println("QQ在慢慢跑");
    }

    @Override
    public void stop() {
        System.out.println("QQ停止跑动");
    }
}

对被装饰者改造:

package com.itest;

public class Cardesign implements Car{
    //把车开进改装厂,即装饰者中要有被装饰者的引用
    private Car car;
    public Cardesign(Car car){
        this.car = car;
    }

    @Override
    public void run() {
        System.out.println("QQ被改装");
        System.out.println("QQ快速跑");
    }

    @Override
    public void stop() {
        car.stop();
    }
}

测试类:

package com.itest;

public class test {
    public static void main(String[] args) {
        QQ qq = new QQ();
        Cardesign cardesign = new Cardesign(qq);
        cardesign.run();
        cardesign.stop();
    }
}

结果:
装饰者模式