装饰者设计模式功能 设计模式装饰模式例子

装饰模式装饰模式允许新的函数被添加到现有的对象中。它是一种代替继承的技术,通过继承可以扩展一个对象的新功能,而不需要增加子类。用对象的关联关系代替继承关系更加灵活,同时避免了类型系统的快速膨胀。主要角色:组件(Component):组件接口定义了全部组件类和装饰器实...

装饰模式

装饰模式允许新的函数被添加到现有的对象中。它是一种代替继承的技术,通过继承可以扩展一个对象的新功能,而不需要增加子类。用对象的关联关系代替继承关系更加灵活,同时避免了类型系统的快速膨胀。

主要角色:

组件(Component):组件接口定义了全部组件类和装饰器实现的行为;组件实现类(ConcreteComponent):实现Component接口,组件实现类就是被装饰器装饰的原始对象,新功能或者附加功能都是通过装饰器添加到该类的对象上的;装饰器抽象类(Decorator):实现Component接口的抽象类,在其中封装了一个Component 对象, 也就是被装饰的对象;具体装饰器类(ConcreteDecorator):该实现类要向被装饰的对象添加某些功能;

类图:

具体举个例子,带它去火锅店吃蘸酱火锅。

有许多下降:

而且每个人的口味都不一样。所以有很多组合。这种情况下,如果用花纹来实现的话,看看吧。

第一步

首先,我们有一个行为下降(组件)

/** * @Author: jimmy * @Description: * 装饰着模式 - * 组件(Component):组件接口定义了全部组件类和装饰器实现的行为; */public inte***ce AllocatSeasoning { void allo();}

接下来,根据上面装饰器的模型,我们需要2个类来实现上面的行为

第二步

第一类(ConcreteComponent)可以理解为搅拌食材的碗,后面蘸的食材都放在这个碗里。

/** * @Author: jimmy * @Description: * 组件实现类(ConcreteComponent): * 实现Component接口,组件实现类就是被装饰器装饰的原始对象, * 新功能或者附加功能都是通过装饰器添加到该类的对象上的; * * 可以把这个理解为装拌料的碗 */public class AllocDo implements AllocatSeasoning{ @Override public void allo() { System.out.println("----- 您好,这边是调料自选区,可以按照您的口味选择自己喜欢的口味 -----"); }}

第三步

第二类,这个类可以理解为抽象。

/** * @Author: jimmy * @Description: * 装饰器抽象类(Decorator): * 实现Component接口的抽象类,在其中封装了一个Component 对象, * 也就是被装饰的对象; * * 这个对象可以理解为已经准备好了,要去拿蘸料的动作的父级。 * AllocatSeasoning可以理解为 蘸料和婉的合体。 */public class AllocDecorator implements AllocatSeasoning{ // 持有对象 private AllocatSeasoning allocatSeasoning; // 构造器 public AllocDecorator(AllocatSeasoning allocatSeasoning) { this.allocatSeasoning = allocatSeasoning; } // 调用对下个对应的方法 @Override public void allo() { allocatSeasoning.allo(); }}

第四步

这里把ConcreteDecorator说白了就是拿着一个盛有蘸酱的碗(可以是空碗)去放你现在要放的蘸酱。我这里只给出一个具体的类,其他有兴趣的可以***代码然后添加。

/** * @Author: jimmy * @Description: * 具体装饰器类(ConcreteDecorator):该实现类要向被装饰的对象添加某些功能; * 这里说白了就是 拿着放有蘸料的碗(可以是空碗)来放现在想放的蘸料 */public class GarlicAlloc extends AllocDecorator{ public GarlicAlloc(AllocatSeasoning allocatSeasoning) { super(allocatSeasoning); } @Override public void allo() { // 调用原有业务方法 super.allo(); // 补充我们这个行为的方法 addGarlic(); } public void addGarlic() { System.out.println("---加蒜---"); }}

测试类

public class DecoratorClinet { public static void ***in(String[] args) { AllocatSeasoning a = new OilAlloc(new GarlicAlloc(new ChilliAlloc(new AllocDo()))); a.allo(); }}

本文来自眼泪是回忆的常客投稿,不代表舒华文档立场,如若转载,请注明出处:https://www.chinashuhua.cn/24/643040.html

打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
() 0
上一篇 07-21
下一篇 07-21

相关推荐

  • 如何自主创业,大学生自主创业例子

    现在很多人都想创业。上班族和学生都有一些创业的想法。无论是自主创业还是投资其他项目,都可以创业赚钱。今天就和大家聊聊如何自己创业,希望能给大家带来一些实质性的参考。创业初期,首先要了解市场,做市场调研是非常重要的工作。对于创业者来说,市场调研可以大大降低失

    2023-07-29 08:22:01
    567 0
  • 求职信范文例子1000字 毕业生外语求职信参考范文合集

    时间一晃而过,前方等待着我们的将是新的工作机会和挑战,是时候好好地琢磨一下写求职信的事情了哦。为了让您不再为写求职信头疼,下面是小编帮大家整理的毕业生外语求职信7篇,希望对大家有所帮助。毕业生外语申请信第一部分尊敬的领导:& emsp& emsp你好!& emsp& emsp衷心感

    2023-07-27 18:10:01
    197 0
  • 公益创业有哪些好的例子 附其刘树军创业例子

    在第八个节日当天,一场特殊的农产品展览正在位于长江边上的重庆江津区金港坨市场举行。展出的有富硒大米、药膳鸡、药膳蛋、鳄鱼肉、鸵鸟肉、臭荆条酒、药用五香腊鸡、五香腊鱼等20多种农产品。没想到的是,这些产品全部来自重庆林一农业开发有限公司;让人没想到的是,这家公

    2023-07-26 04:44:01
    189 0
  • 装饰者设计模式功能 设计模式装饰模式例子

    装饰模式装饰模式允许新的函数被添加到现有的对象中。它是一种代替继承的技术,通过继承可以扩展一个对象的新功能,而不需要增加子类。用对象的关联关系代替继承关系更加灵活,同时避免了类型系统的快速膨胀。主要角色:组件(Component):组件接口定义了全部组件类和装饰器实

    2023-07-21 02:24:01
    715 0

评论列表

联系我们

在线咨询: QQ交谈

邮件:admin@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信