合成(Composite)模式是什么呢?
合成(Composite)模式是什么呢?
合成模式合成(Composite)模式属于对象的结构模式。1。定义:合成模式将对象组织到树结构中,可以用来描述整体和部分的关系。合成模式可以使客户端将单纯的元素和复合的元素同等看待。注意:就如阎博士书中所说,用文件系统来理解合成模式是个很好的方式。
2。两种实现1)透明式:子结点集合的管理方法在抽象类或接口中定义,向客户端隐藏树叶结点和树枝结点的区别。缺点:虽然树枝对象还是树叶对象在客户端看来是没区别了,但是他们两者确实是有区别的。使用透明式的实现方式,就会发生这样的情况:客户端可能调用了树叶对象的子结点管理方法,使用透明式实现使得这样的错误在编译器无法被检查出来,只能延迟到运行期才会暴露出来。
(说白了就是客户端可能会调到空的方法。)2)安全式:子结点集合的管理方式只在树枝接点中定义,客户端必须明确知道当前对象到底是树枝还是树叶。缺点:这种方式不够透明,树枝和树叶具有不同的接口,客户端就不能把它们当成同一类对象看待了。(说白了就是不能把树枝和树叶全部上转成他们的抽象类或接口。
)3。合成模式实现的几个问题1)树的方向(说白了就是:子结点中是否应该维持父结点的引用,父结点中是否应该维持子结点的引用)2)遍历时缓存(不明白撒意思)3)客户端不应该直接调用树叶类,应当由父类向树叶类进行委派。(不明白撒意思)4。应该使用合成模式的情形1)需要描述对象的部分和整体的等级结构2)需要客户端忽略掉个体构件和组合构件的区别。
客户端必须平等对待所有的构件,包括个体构件和组合构件5。合成模式的优点1)合成模式可以很容易地增加新种类的构件2)使用合成模式可以使得构件对客户端透明6。合成模式的缺点1)不容易控制树枝构件的类型2)使用继承的方法来增加新的行为比较困难。7。
思考前段时间碰到的权限管理,里面就有权限树的概念,可否应用合成模式? 。
答:一 学习背景 在学习关于JSF组件时涉及到了composite模式,于是就查看一些资料,以下是自己对这种模式的理解。二 自己整理的一些资料(见参考资料)1...详情>>
答:对于应用软件开发,中间件远比操作系统和网络服务更为重要,中间件提供的程序接口定义了一个相对稳定的高层应用环境,不管底层的计算机硬件和系统软件怎样更新换代,只要将...详情>>
答:一般过程1)信息收集在网络巾不同关键点,根据系统和网络日志文件、和文件中的不期望的改变、程序执行中的不期望行为、物理形式的入侵信息这四个方面,收集系统、网络、数...详情>>