设计模式学习与实践(十)----合成模式(composite)
来源:互联网 发布:淘宝功能中心 编辑:程序博客网 时间:2024/06/15 12:34
1.1.1 描述
l 正规描述
合成模式将对象组织到树结构中,可以用来描述整体与部分的关系。合成模式就是一个处理对象的树结构的模式。合成模式把部分与整体的关系用树结构表示出来。合成模式使得客户端把一个个单独的成分对象和由他们复合而成的合成对象同等看待。
l 形象描述
MM今天过生日。“我过生日,你要送我一件礼物。”“嗯,好吧,去商店,你自己挑。”“这件T恤挺漂亮,买,这条裙子好看,买,这个包也不错,买。”“喂,买了三件了呀,我只答应送一件礼物的哦。”“什么呀,T恤加裙子加包包,正好配成一套呀,小姐,麻烦你包起来。”“……”,MM都会用Composite模式了,你会了没有?
1.1.2 类图&示意代码
形式1:安全模式
public interface Component(){
Composite getComposite();
Operation1();
}
public class Composite implements Component(){
public Composite getComposite(){
return this;
}
public void Operation1(){
//to do
}
public void childComponentManageMethod(){//eg add(),remove()…
//to do manage child component
}
}
public class Leaf implements Component(){
public Composite getComposite(){
return null;
}
public void Operation1(){
//to do
}
}
public class Client(){
public void main(String args[]){
Component leaf = new Leaf();
leaf.Operation1();
Composite composite = new Composite();
composite.Operation1();
composite.childComponentManageMethod();
}
}
注:
形式2:透明模式
public interface Component(){
Operation1();
Enumeration getChildComponents();
childComponentManageMethod();
boolean isComposite();
boolean isLeaf();
}
public class Composite implements Component(){
Enumeration childComponents = new Enumeration();
public void Operation1(){
//to do
}
public Enumeration getChildComponents(){
return childComponents;
}
public void childComponentManageMethod(){//例如:add(),remove()
//to do
}
public boolean isLeaf(){
return false;
}
public Boolean isComposite(){
return true;
}
}
public class Leaf implements Component(){
public void Operation1(){
//to do
}
public Enumeration getChildComponents(){
return null;
}
public void childComponentManageMethod(){
//to do
}
public boolean isLeaf(){
return true;
}
public Boolean isComposite(){
return false;
}
}
public class Client(){
public void main(String args[]){
Component leaf = new Leaf();
leaf.Operation1();
Component composite = new Composite();
if(composite.isComposite()){
composite.childComponentManageMethod();
}
}
}
注:
1、
1.1.3 举例
比较
- 设计模式学习与实践(十)----合成模式(composite)
- 合成(Composite)模式
- 合成(Composite)模式
- 合成(Composite)模式
- 合成(Composite)模式
- 设计模式学习笔记--合成(Composite)模式
- 讲故事学设计模式-合成(Composite)模式
- Java设计模式——合成模式(Composite)
- Java设计模式之合成模式(Composite)
- 一.合成(Composite)模式
- 《Java与模式》学习笔记:设计模式——合成(Composite)模式
- 《Java与模式》学习笔记:设计模式——合成(Composite)模式
- 合成模式(Composite) -- (模式之六)
- [Golang]设计模式实践:组合(Composite)
- 设计模式c#语言描述——建造者模式、适配器模式、合成(Composite)模式
- C# 设计模式--合成模式(Composite)
- 【设计模式】之 Composite 合成模式
- 设计模式——合成模式(Composite)
- JBuilder 无法启动的解决方法
- ubuntu 开启ssh服务
- 字符频率统计(二叉树和普通方法)
- C/C++ 预编译命令
- 解决 html 代码不解析 的问题
- 设计模式学习与实践(十)----合成模式(composite)
- 计算机书籍下载地址
- C#语言新特性
- 获取普通Java对象大小
- 一些网址
- sql2005数据库远程备份
- linux diff 命令详解
- 函数调用约定区别
- 两个月没更新