GOF23 设计模式 之装饰器模式

装饰器模式就是对一个类进行加强。 进行各种加强; 防止出现新增功能就需要新增类的情况(防止类体系膨胀);

是用的比较多的模式;像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();
	}

}

发布了189 篇原创文章 · 获赞 10 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/wangrong111222/article/details/104110773