安全透明的合成模式
2012-01-19 15:57
113 查看
合成模式:
【类图】
合成模式将对象组织到树结构中,可以用来描述整体与部分的关系。合成模式可以使客户端将单纯元素与复合元素同等看待。
角色划分:
抽象构件角色:参与组合的对象给定一个接口。这个角色给出共有接口及其默认行为。
树叶构件角色:参加组合的树叶对象。树叶对象没有下级对象。
树枝构件角色:参加有子对象的对象,并给出树枝构件对象的行为。
安全合成模式:
这一种合成模式只能是树枝节点才能添加子节点,叶子节点是不能添加子节点的。只能在树枝节点上面添加子节点对其扩展。
叶子节点只要确定了就不能被改变。之所以是安全模式是因为叶子节点Leaf没有添加子节点的功能,避免编译误调用了叶子节点造成的错误。
缺点:叶子节点对象和树枝节点对象具有不同的接口,缺乏透明性。
下面是透明的合成模式:
上面的类图给我们展示了,树枝节点和叶子节点都能添加子节点。为了不让客户误调用叶子节点对象的AddChild方法,解决办法是重载Component类
的AddChild方法,在运行时抛出异常,要求在测试上测试人员务必测试每一条分支,避免没测试到的分支存在隐患。
这时的叶子节点可能只暂时的叶子节点,如果在开发中要对叶子扩展,可以对相应的叶子节点添加子节点。这就存在把叶子节点转换成为了树枝节点的可能。
可以在不改变树形的原有结构中,对其叶子节点进行扩展。
合成模式:容易明确局部与整体的关系,安全的合成模式,透明性不高,扩展性不好。透明的合成模式,安全性不高。在可视组件库VCL中,当你拖动一个控件,还能像这个控件里面再加入其他控件,这就表明VCL中使用的透明合成模式,VCL中是不安全的。
【类图】
合成模式将对象组织到树结构中,可以用来描述整体与部分的关系。合成模式可以使客户端将单纯元素与复合元素同等看待。
角色划分:
抽象构件角色:参与组合的对象给定一个接口。这个角色给出共有接口及其默认行为。
树叶构件角色:参加组合的树叶对象。树叶对象没有下级对象。
树枝构件角色:参加有子对象的对象,并给出树枝构件对象的行为。
安全合成模式:
这一种合成模式只能是树枝节点才能添加子节点,叶子节点是不能添加子节点的。只能在树枝节点上面添加子节点对其扩展。
叶子节点只要确定了就不能被改变。之所以是安全模式是因为叶子节点Leaf没有添加子节点的功能,避免编译误调用了叶子节点造成的错误。
缺点:叶子节点对象和树枝节点对象具有不同的接口,缺乏透明性。
下面是透明的合成模式:
上面的类图给我们展示了,树枝节点和叶子节点都能添加子节点。为了不让客户误调用叶子节点对象的AddChild方法,解决办法是重载Component类
的AddChild方法,在运行时抛出异常,要求在测试上测试人员务必测试每一条分支,避免没测试到的分支存在隐患。
这时的叶子节点可能只暂时的叶子节点,如果在开发中要对叶子扩展,可以对相应的叶子节点添加子节点。这就存在把叶子节点转换成为了树枝节点的可能。
可以在不改变树形的原有结构中,对其叶子节点进行扩展。
合成模式:容易明确局部与整体的关系,安全的合成模式,透明性不高,扩展性不好。透明的合成模式,安全性不高。在可视组件库VCL中,当你拖动一个控件,还能像这个控件里面再加入其他控件,这就表明VCL中使用的透明合成模式,VCL中是不安全的。
相关文章推荐
- 树形结构的处理——组合模式(四):透明组合模式与安全组合模式
- composite模式 透明和安全
- 组合模式(Composite)的安全模式与透明模式 推荐
- 将 Android 设备启动至安全模式
- 项目开发中的一些注意事项以及技巧总结 基于Repository模式设计项目架构—你可以参考的项目架构设计 Asp.Net Core中使用RSA加密 EF Core中的多对多映射如何实现? asp.net core下的如何给网站做安全设置 获取服务端https证书 Js异常捕获
- 微信公众平台开发模式中的安全问题
- thinkphp微信开之安全模式消息加密解密不成功的解决办法
- hadoop的安全模式
- 解决蓝屏小经验——不能进安全模式
- C++ 实现的线程安全的单例模式类
- 【设计模式】合成复用原则
- Java线程安全的单例模式的几种实现
- JAVA与模式学习笔记之合成模式
- ----[x86保护模式] CPU合成内存地址的方式----
- Windows下的PHP开发环境搭建——PHP线程安全与非线程安全、Apache版本选择,及详解五种运行模式。
- 关闭IE增加安全模式 Window Server 2008R2/2012R2
- WCF分布式安全开发实践(3):传输安全模式之自定义用户名密码身份验证
- 解决无法进入安全模式
- 当免费模式遭遇安全价值观
- 设计模式六大原则--合成/聚合复用原则