设计模式-装饰着模式

装饰着模式一般在不修改原功能基础上去添加新的功能

例如当美颜相机需要在原生相机的基础上添加一个美颜效果,但是不想去修改原生相机的功能
然后在美颜效果的基础上再添加一个滤镜效果,不修改美颜效果,如下图所示
在这里插入图片描述

示例代码


/**
 * 拍照功能
 */
interface IPicture{
    void takePicture();
}

/**
 * 原生相机
 */
class Phone implements IPicture{
    @Override
    public void takePicture() {
        System.out.println("照相");
    }
}

/**
 * 添加美颜效果
 */
class BeautyPhone implements IPicture{

    IPicture iPicture;

    public BeautyPhone(IPicture iPicture) {
        this.iPicture = iPicture;
    }

    @Override
    public void takePicture() {
        iPicture.takePicture();
        System.out.println("添加美颜效果");
    }
}

/**
 * 添加滤镜效果
 */
class FilterPhone implements IPicture{

    IPicture iPicture;

    public FilterPhone(IPicture iPicture) {
        this.iPicture = iPicture;
    }

    @Override
    public void takePicture() {
        iPicture.takePicture();
        System.out.println("添加滤镜效果");
    }
}

测试

public static void main(String[] args) {
        Phone phone = new Phone();

        //添加滤镜效果
        IPicture picture = new FilterPhone(phone) ;
        picture.takePicture();
    }

输出:

照相
添加滤镜效果

public static void main(String[] args) {
        Phone phone = new Phone();

        //添加美颜效果
        IPicture picture = new BeautyPhone(phone) ;
        picture.takePicture();
    }

输出:

照相
添加美颜效果

 public static void main(String[] args) {
        Phone phone = new Phone();

        //先在原相机基础上添加美颜效果 再在美颜相机基础上添加滤镜效果
        IPicture picture = new FilterPhone(new BeautyPhone(phone))   ;
        picture.takePicture();
    }

照相

输出:

添加美颜效果
添加滤镜效果

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值