S4:装饰模式 Decorator
2024-09-02 14:24:05
动态的给一个对象添加额外的一些职责,就增加功能而言,比继承更具灵活性.
如果仅有一个ConcreateComponent,也可以让Decorator继承ConcreateComponent来实现装饰功能,尽管这看起来很像适配器.但区别主要是语义上的.
何时使用:
1.为已有对象动态添加更能多功能.
2.新添加的功能不是对象的核心功能.
UML
示例代码:
User类提供了一个获取注册时间的方法,但获取到的时间是一个时间戳,不符合阅读习惯,我们用装饰器装饰,来获取一个较友好的时间表示.
class User
{
public function getRegTime()
{
return time();
}
} class Decorator
{
protected $user; public function __construct(User $user)
{
$this->user = $user;
} public function getTimeForHuman()
{
return date('Y-m-d H:i:s', $this->user->getRegTime());
}
} $user = new User();
$decorator = new Decorator($user);
echo $decorator->getTimeForHuman();
最新文章
- 一步一步安装UEFI分区方式的windows 10 企业版
- Delphi编程获取系统当前进程、窗口句柄、文件属性以(转)
- Java for LintCode 验证二叉查找树
- NuGet更新引用Dll
- 2.精通前端系列技术之seajs和gruntJs结合开发(三)
- mysql 语句其它及优化
- 1109. Conference(二分图)
- android110 jni01
- jdbcType与javaType的对应关系
- TCP报文中的SYN,FIN,ACK,PSH,RST,URG
- C语言:XML学习
- 如何将一个div水平垂直居中?4种方法做推荐
- os x下如何挂载iso镜像
- nim读写注册表的小例子
- Kudu之Tablet的发现过程
- C#自动识别文件编码
- MySQL Workbench导出Model提示['ERROR 1064 (42000): You have an error in your SQL syntax....syntax to use near 'VISIBLE']
- bootstrap中的对话框-dialog-2
- Java JDBC的基础知识(二)
- linux下memcached安装 和redis安装,jdk,tomcat,mysql 安装
热门文章
- YUY格式
- linux常用60条命令 转
- POJ1018 Communication System
- 魔法使的烟花(NOIP模拟赛Round 7)
- iphone CGBitmapContextCreate()函数解释
- (二十二)函数fseek() 用法
- 关于 Delphi 中流的使用(1) 用 TMemoryStream(内存流) 入门 &;&;&; 关于指针的迷惑,我自己问的.
- 前端面试知识点锦集(JavaScript篇)
- Spring:基于配置文件的创建对象的各种方式
- King of Karaoke