装饰器模式就是对一个类进行加强。 进行各种加强; 防止出现新增功能就需要新增类的情况(防止类体系膨胀);
是用的比较多的模式;像io流那块就用了很多,
结构分为:
1. 抽象构件接口
2. 被装饰角色
3. 装饰角色
4. 具体实施装饰角色
**********************
代码实现:
// 接口
package decorator;
// 接口
public interface ICar {
void move();
}
// 被装饰者类
package decorator;
// 被装饰者
public class Car implements ICar {
@Override
public void move() {
// TODO Auto-generated method stub
System.out.println("车在跑");
}
}
// 装饰者类
package decorator;
// 装饰者
public class SuperCar implements ICar {
ICar car;
@Override
public void move() {
// TODO Auto-generated method stub
this.car.move();
}
public SuperCar(ICar car) {
super();
this.car = car;
}
}
// 实施装饰的类
package decorator;
public class FlyCar extends SuperCar{
public FlyCar(ICar car) {
super(car);
// TODO Auto-generated constructor stub
}
@Override
public void move() {
// TODO Auto-generated method stub
System.out.println("车飞起来了");
super.move();
}
}
package decorator;
public class WaterCar extends SuperCar {
public WaterCar(ICar car) {
super(car);
// TODO Auto-generated constructor stub
}
@Override
public void move() {
// TODO Auto-generated method stub
System.out.println("车在水上浮起来了");
super.move();
}
}
// 客户端
package decorator;
public class Client {
public static void main(String[] args) {
// TODO Auto-generated method stub
Car car = new Car();
FlyCar car2= new FlyCar(new WaterCar(car)); // 层层装饰
car2.move();
}
}