组合和享元模式

今天两个模式都很简单,因为都是平时用的很多的模式。

第一个时组合模式,组合模式的精髓就是 对于  一个 对象或者多个对象组成的组合,对于client来说,他的行为时一致的。

组合模式用的最多的例子,就是构建树形结构,树形结构有 两种类型的节点, leaf节点 和 非 leaf节点,姑且叫Container节点。

一个container可以包含多个leaf作为其 child, 对外,我们可以按照相同的逻辑来操作 这两类节点,而不用区分时leaf还时非leaf。

在Unix中,最只直观的 例子是File 和Directory , Directory 可以包含子 File和子 Directory, 对于用户而已,可以在这两类对象上都执行相同的command,比如ls,cp等等。

在java中,大量使用组合模式的是 java.swing的UI编程,各类组件都是继承自component,不管你是button,Dialog,Panel 等都可以被统一对待。

比如对于任何一个component 都可以调用其show,hide方法,这就是 个体和组合的行为一致性。


享元模式,其实就是对象复用模式,我们看到的各类连接池都可以看成是该类模式。用户获取一个连接时,会从池子里拿一个已经创建好的,

而不是重新创建,可以避免大量的开销。

java中的string,用的就是享元模式,假设你创建10000个 “abc”,那么其实内存的常量区只有一个 abc。

你可能感兴趣的:(组合和享元模式)