装饰者模式

装饰者模式

​ 装饰模式(Decorator Pattern) :动态地给一个对象增加一些额外的职责(Responsibility),就增加对象功能来说,装饰模式比生成子类实现更为灵活。其别名也可以称为包装器(Wrapper),与适配器模式的别名相同,但它们适用于不同的场合。根据翻译的不同,装饰模式也有人称之为“油漆工模式”,它是一种对象结构型模式。

img

装饰模式包含如下角色:

Component: 抽象构件

ConcreteComponent: 具体构件(只管执行)

Decorator: 抽象装饰类(实现具体构建的方法)

ConcreteDecorator: 具体装饰类(调用父类构造器实例化)

装饰者模式多层加密

img

个人理解

感觉装饰者模式就是无限套娃,Component: 抽象构件会产生两个类,一个是具体的实现,一个是装饰品的抽象类,然后就是不同的装饰品继承这个抽象类。

具体的实现:继承接口(Cipher),创建这个原型(SimpleCipher),要被装饰的东西。

**抽象实现:**继承接口(Cipher),创建抽象类(CipherDecorator),通过构造方法传入(Cipher),然后调用Cipher的装饰方法。

**装饰类实现:**继承抽象实现,复写父类的方法 调用 + 装饰

例如:

public class AdvancedCipher extends CipherDecorator {
    protected AdvancedCipher(Cipher cipher) {
        super(cipher);
    }

    public String encrypt(String plainText) {
        String result = super.encrypt(plainText);
        result=mod(result);
        return result;
    }

    public String mod(String text) {
        String str="";
        for(int i=0;i<text.length();i++){
            String c=String.valueOf(text.charAt(i)%6);
            str+=c;
        }
        return str;
    }
 }

参考博客:https://www.cnblogs.com/WindSun/p/10263459.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值