装饰者模式

来源:互联网 发布:淘宝卖家淘宝客推广 编辑:程序博客网 时间:2024/06/05 18:51

ICar.java

public interface ICar {void move();}//ConcreteComponent 具体构件角色(真实对象)class Car implements ICar {@Overridepublic void move() {System.out.println("陆地上跑!");}}//Decorator装饰角色class SuperCar implements ICar {protected ICar car;public SuperCar(ICar car) {super();this.car = car;}@Overridepublic void move() {car.move();}}//ConcreteDecorator具体装饰角色class FlyCar extends SuperCar {public FlyCar(ICar car) {super(car);}public void fly(){System.out.println("天上飞!");}@Overridepublic void move() {super.move();fly();}}//ConcreteDecorator具体装饰角色class WaterCar extends SuperCar {public WaterCar(ICar car) {super(car);}public void swim(){System.out.println("水上游!");}@Overridepublic void move() {super.move();swim();}}//ConcreteDecorator具体装饰角色class AICar extends SuperCar {public AICar(ICar car) {super(car);}public void autoMove(){System.out.println("自动跑!");}@Overridepublic void move() {super.move();autoMove();}}
Client.java

public class Client {public static void main(String[] args) {Car car  = new Car();car.move();System.out.println("增加新的功能,飞行----------");FlyCar flycar = new FlyCar(car);flycar.move();System.out.println("增加新的功能,水里游---------");WaterCar  waterCar = new WaterCar(car);waterCar.move();System.out.println("增加两个新的功能,飞行,水里游-------");WaterCar waterCar2 = new WaterCar(new FlyCar(car));waterCar2.move();//Reader r = new BufferedReader(new InputStreamReader(new FileInputStream(new File("d:/a.txt"))));//io流也用到了装饰模式}}


原创粉丝点击