再说装饰器模式 男娘i 2022-06-03 05:28 68阅读 0赞 > To extend or modify the behaviour of **an instance** at runtime decorator design pattern is used. Inheritance is used to extend the abilities of **a class**. Unlike inheritance, you can choose any single object of a class and modify its behaviour leaving the other instances unmodified. 这是我们生活中一种常见的美味,其制作过程就是一种典型的装饰器模式,除了原味,我们可以额外添加坚果、草莓等额外的美味,同时还保持了原有冰淇淋的美味。 ![这里写图片描述][SouthEast] 装饰器模式的UML类图 ![这里写图片描述][SouthEast 1] * 定义冰淇淋制作接口**Icecream** public interface Icecream { String makeIcecream(); } * 原味冰淇淋:SimpleIcecream public class SimpleIcecream implements Icecream { @Override public String makeIcecream() { return "Base Icecream"; } } * 冰淇淋装饰器抽象类 abstract public class IcecreamDecorator implements Icecream { protected Icecream specialIcecream; public IcecreamDecorator(Icecream specialIcecream) { this.specialIcecream = specialIcecream; } public String makeIcecream() { return specialIcecream.makeIcecream(); } } * 坚果冰淇淋装饰 public class NuttyDecorator extends IcecreamDecorator { public NuttyDecorator(Icecream specialIcecream) { super(specialIcecream); } public String makeIcecream() { System.out.println("NuttyDecorator makeIcecream"); return specialIcecream.makeIcecream() + addNuts(); } private String addNuts() { return " + cruncy nuts"; } } * 草莓冰淇淋装饰 public class StrawberryDecorator extends IcecreamDecorator { public StrawberryDecorator(Icecream specialIcecream) { super(specialIcecream); } public String makeIcecream() { System.out.println("StrawberryDecorator makeIcecream"); return super.makeIcecream() + " + strawberry"; } } * 可爱甜心冰淇淋装饰 public class HoneyDecorator extends IcecreamDecorator { public HoneyDecorator(Icecream specialIcecream) { super(specialIcecream); } public String makeIcecream() { System.out.println("HoneyDecorator makeIcecream"); return specialIcecream.makeIcecream() + addHoney(); } private String addHoney() { return " + sweet honey"; } } * 最后我们来制作一个多味的冰淇淋,同时添加了坚果、草莓与可爱甜心 public class TestDecorator { public static void main(String args[]) { Icecream icecream = new StrawberryDecorator(new HoneyDecorator(new NuttyDecorator(new SimpleIcecream()))); System.out.println(icecream.makeIcecream()); } } [https://javapapers.com/design-patterns/decorator-pattern/][https_javapapers.com_design-patterns_decorator-pattern] [SouthEast]: /images/20220603/238e8bf7fefe4fc0ad8e66348e7d8f00.png [SouthEast 1]: /images/20220603/b02185c2cf7e4b6ba63f69c0c133a29a.png [https_javapapers.com_design-patterns_decorator-pattern]: https://javapapers.com/design-patterns/decorator-pattern/
相关 装饰器模式 装饰器模式 <?php class BaseArticle{ protected $art = null; protected 我会带着你远行/ 2022年07月21日 01:28/ 0 赞/ 277 阅读
相关 装饰器模式 1 <?php 2 //装饰器模式-在不改变原有类的结构上,对类的功能那个作补充 3 4 //武器基类 5 abstract 秒速五厘米/ 2022年06月16日 00:00/ 0 赞/ 274 阅读
相关 再说装饰器模式 > To extend or modify the behaviour of an instance at runtime decorator design pattern i 男娘i/ 2022年06月03日 05:28/ 0 赞/ 69 阅读
相关 装饰器模式 在学装饰器模式的时候,我想到了责任链模式中的级别这个概念,为什么这么说,在一个OA系统中我们会有不同级别(或者说权限范围不同)的管理员,首先我们要明确不同级别的管理员它也是管理 深碍√TFBOYSˉ_/ 2022年05月08日 06:14/ 0 赞/ 286 阅读
相关 装饰器模式 1、初识装饰器模式 装饰器模式,顾名思义,就是对已经存在的某些类进行装饰,以此来扩展一些功能。其结构图如下: ![watermark_type_ZmFuZ3poZW 小鱼儿/ 2022年04月24日 08:50/ 0 赞/ 317 阅读
相关 装饰器模式 ![Fpm6gbuGrUYHxqlnbEc-syPtY1Y3][] 什么是装饰器? 装饰器设计模式 > 装饰器模式(Decorator Pattern)允许向一个现有 ╰半橙微兮°/ 2022年04月21日 22:36/ 0 赞/ 306 阅读
相关 装饰器模式 一、基类 ![ContractedBlock.gif][] ![ExpandedBlockStart.gif][] /----------------------- £神魔★判官ぃ/ 2021年09月30日 08:42/ 0 赞/ 445 阅读
相关 装饰器模式 7.装饰器模式 ![70][] ![70 1][] class Program { static void Main( 拼搏现实的明天。/ 2021年09月16日 23:56/ 0 赞/ 411 阅读
相关 装饰器模式 ![5057999-ef364c6262961125.png][] image.png 意图: 动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模 超、凢脫俗/ 2021年09月12日 02:16/ 0 赞/ 478 阅读
相关 装饰器模式 饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。 这种... 小灰灰/ 2020年06月13日 05:56/ 0 赞/ 855 阅读
还没有评论,来说两句吧...