设计模式之装饰模式 Decorator
Posted 大白
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式之装饰模式 Decorator相关的知识,希望对你有一定的参考价值。
代码实现
public interface ICar { void move(); }
//具体构件角色(真实对象,被装饰角色) class Car implements ICar{ @Override public void move() { System.out.println("陆地上跑"); } }
//装饰角色 class SuperCar implements ICar{ private ICar car; public SuperCar(ICar car) { super(); this.car = car; } @Override public void move() { car.move(); } }
//具体装饰角色 class FlyCar extends SuperCar{ public FlyCar(ICar car) { super(car); // TODO Auto-generated constructor stub } public void fly(){ System.out.println("天上飞"); } @Override public void move() { // TODO Auto-generated method stub super.move(); fly(); } } class WaterCar extends SuperCar{ public WaterCar(ICar car) { super(car); // TODO Auto-generated constructor stub } public void swim(){ System.out.println("水中游"); } @Override public void move() { // TODO Auto-generated method stub super.move(); swim(); } } class AICar extends SuperCar{ public AICar(ICar car) { super(car); // TODO Auto-generated constructor stub } public void autoMove(){ System.out.println("自动驾驶"); } @Override public void move() { // TODO Auto-generated method stub super.move(); autoMove(); } }
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(flycar); // waterCar.move(); System.out.println("增加两个新功能,飞行,水里游---"); WaterCar waterCar2 = new WaterCar(new FlyCar(car)); waterCar2.move(); } }
以上是关于设计模式之装饰模式 Decorator的主要内容,如果未能解决你的问题,请参考以下文章