一、装饰者模式
abstract class Car {
protected String name;
abstract void start();
abstract void stop();
}
1、装饰者和被装饰者同时实现一个接口或继承同一个类Car
2、装饰者持有被装饰者的引用
被装饰者:
public class BMW extends Car {
public BMW() {
this.name = "宝马";
}
@Override
void start() {
System.out.println(this.name + "启动了");
}
@Override
void stop() {
System.out.println(this.name + "停止了");
}
}
装饰者:public class CarWrapper extends Car {
private Car car;
public CarWrapper(Car car) {
this.car = car;
}
@Override
void start() {
//装饰的方法
System.out.println(car.name + "加装尾翼,启动了");
}
@Override
void stop() {
car.stop();
}
}3、调用BMW bwm=new BMW();
CarWrapper wrap = new CarWrapper(bwm);
wrap.start();
wrap.stop();
本文介绍了一种常用的设计模式——装饰者模式。通过一个具体的例子,即为宝马汽车加装尾翼,展示了装饰者模式的基本原理及其如何在Java中实现。装饰者模式允许在不改变原有类的情况下增加新的功能。
10万+

被折叠的 条评论
为什么被折叠?



