博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HeadFisrt 设计模式03 装饰者
阅读量:6952 次
发布时间:2019-06-27

本文共 380 字,大约阅读时间需要 1 分钟。

类应该对扩展开放, 对修改关闭.

 

所谓装饰者模式, 是指用其他的类来装饰某个类,

装饰者说白了就是使用 has-a 来代替 is-a

 

隐喻

咖啡店, 有很多种咖啡, 咖啡里还要增加一些 milk, 面包片啊, 等等. 针对加的东西不同, 计算出来的费用不同, 那么我们需要怎么做呢?

1. 首先创建一个 coffee 基类(有抽象的cost方法)

2. 黑咖啡, 原味咖啡, 等咖啡继承 coffee 基础类, 是 is-a的关系

3. 创建一个装饰基础类, 用来装饰咖啡( 有抽象的cost方法)

3. milk, 面包片等是用来装饰咖啡的, 比如黑咖啡中加入milk, 所以继承装饰基类

好处

比如你计算费用时, 所有装饰者的费用自己就可以调用计算.

转载于:https://www.cnblogs.com/moveofgod/p/3772583.html

你可能感兴趣的文章
STL 笔记(四) 迭代器 iterator
查看>>
2017"百度之星"程序设计大赛 - 复赛1003&&HDU 6146 Pokémon GO【数学,递推,dp】
查看>>
开源倾情奉献:基于.NET打造IP智能网络视频监控系统
查看>>
[LeetCode] Valid Parenthesis String 验证括号字符串
查看>>
linux之 ssh连接服务器,WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
查看>>
Android连接热点的Socket文件传输
查看>>
各大SRC中的CSRF技巧
查看>>
Docker for Windows 使用入门
查看>>
c代码片段-注解
查看>>
【Django】Web应用开发经由
查看>>
SpringBoot(九)-- SpringBoot JDBC
查看>>
Spring + Mybatis - 原始dao开发整合 与 Mapper代理整合
查看>>
基于Centos搭建nginx+uwsgi运行django环境
查看>>
context switch
查看>>
Oracle awr报告生成操作步骤
查看>>
【DB2】DB2使用IMPORT命令导入含有自增长列的表报错处理
查看>>
微服务之springCloud-docker-comsumer(三)
查看>>
dhcpcd守护进程分析【转】
查看>>
Linux - 理不清的权限chmod与chown区别
查看>>
TCP协议疑难杂症全景解析
查看>>