装饰者模式
使用步骤
- 装饰者和被装饰者实现同一个接口或者继承同一个类
- 装饰者中要有被装饰者的引用
- 对需要增强的方法进行加强
- 对不需要加强的方法调用原来的方法
实现代码:
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();
}
}
结果: