zoukankan      html  css  js  c++  java
  • java设计模式之装饰模式

    package wrapper;

    //创建一个接口

    public interface ICar {
    void move();
    }

    //一个实体类实现这个接口
    class Car implements ICar{

    @Override
    public void move() {
    // TODO Auto-generated method stub
    System.out.println("陆地上跑!");
    }

    }
    //装饰器角色也实现了这个接口 并有指向实体类的属性。
    class SuperCar implements ICar{
    protected ICar car;

    public SuperCar(ICar car) {
    super();
    this.car = car;
    }

    @Override
    public void move() {
    // TODO Auto-generated method stub
    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(){
    super.move();
    swim();
    }
    }

    //具体装饰器继承装饰器
    class AICar extends SuperCar{

    public AICar(ICar car) {
    super(car);
    // TODO Auto-generated constructor stub
    }
    public void auto(){
    System.out.println("自动跑");
    }
    @Override
    public void move(){
    super.move();
    auto();
    }
    }

    //测试一下  

    package wrapper;

    public class Client {
    public static void main(String[] args) {
    Car car=new Car();
    // car.move();
    System.out.println("增加新的功能");
    FlyCar fly=new FlyCar(car);

    WaterCar wC=new WaterCar(new FlyCar(car));
    wC.move();

    }
    }

  • 相关阅读:
    第3天:视图提取请求参数和响应对象
    第2天:Django路由与视图
    第1天:Django框架简介与工程创建
    Jenkins多选项框使用
    备份Kylin的Metadata
    前台传值 后台接受乱码
    查询表的列名,字符类型
    html div隐藏后取消所占的空位
    bootstrap 利用jquery 添加disabled属性
    bootstrap datetimepicker 复选可删除,可规定指定日期不可选
  • 原文地址:https://www.cnblogs.com/cyz110/p/6416735.html
Copyright © 2011-2022 走看看