P8 装饰模式

一、定义

装饰模式又称为包装模式,通过一种对客户端透明的方式来扩展对象的功能,是继承关系的一个替代方案。

二、类图

 

工作过程:

先创建一个基本basecar,实现基本功能,如果要新增功能

抽象类负责

1、限制入参必须是car

2、设置要修饰的主角:Car

3、继承基本功能

装饰结果有两个,如果是飞,fly,则继承后,传入一个基本basecar,然后再show里除了获取基本basecar的功能,再额外添加fly功能即可

然后创建

三、代码

public interface Car {
    void show();
}
public class BaseCar implements Car{
    @Override
    public void show() {
        System.out.println("可以跑");
    }
}
public abstract class CarDecorator implements Car{
    private Car car;

    public CarDecorator(Car car) {
        this.car = car;
    }

    public Car getCar(){
        return car;
    }
}

装饰1

public class FlyCarDecorator extends CarDecorator{
    public FlyCarDecorator(Car car) {
        super(car);
    }

    @Override
    public void show() {
        this.getCar().show();
        this.fly();
    }

    private void fly() {
        System.out.println("会飞");
    }
}

装饰2

public class SwimCarDecorator extends CarDecorator{
    public SwimCarDecorator(Car car) {
        super(car);
    }

    @Override
    public void show() {
        this.getCar().show();
        this.swim();
    }

    private void swim() {
        System.out.println("会水");
    }
}

测试类

public class Main {
    public static void main(String[] args) {
        BaseCar car = new BaseCar();
        CarDecorator carDecorator = new FlyCarDecorator(car);
        carDecorator.show();
        CarDecorator carDecorator1 = new SwimCarDecorator(carDecorator);
        carDecorator1.show();
    }
}

结果

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值