再说装饰器模式
来源:互联网 发布:java程序设计流程图 编辑:程序博客网 时间:2024/06/06 00:03
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.
这是我们生活中一种常见的美味,其制作过程就是一种典型的装饰器模式,除了原味,我们可以额外添加坚果、草莓等额外的美味,同时还保持了原有冰淇淋的美味。
装饰器模式的UML类图
- 定义冰淇淋制作接口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/
阅读全文
0 0
- 再说装饰器模式
- c++装饰器模式
- 装饰器模式
- 装饰器模式
- 装饰器(Decorator)模式
- 装饰器模式
- 装饰器模式
- 装饰器模式
- 装饰器模式
- 装饰器模式
- 装饰器模式
- 装饰器(Decorator)模式
- 浅谈装饰器模式
- java 装饰器模式
- 装饰器(Decorator)模式
- 装饰器模式
- 装饰器(Decorator)模式
- 装饰器模式
- The Accomodation of Students 二分图判定+匹配
- IO操作-知识概要
- 论我
- pip
- java 读取txt中矩阵
- 再说装饰器模式
- 蓝桥杯算法训练 ALGO-1 区间k大数查询 Java
- 自定义EditText_password输入框
- Ubuntu-Java-SerialPort-RXTX
- Eclipse的GUI编程 (WindowBulider)
- mysql用户root多密码成因
- opencl之code builder学习教程1
- 数据源读写分离 -- replication
- 还说关于工业软件的那点事