国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

java設(shè)計模式之組合模式

2019-11-11 07:54:16
字體:
供稿:網(wǎng)友

組合模式:允許你將對象組合成樹形結(jié)構(gòu)來表現(xiàn)“整體/部分”層次結(jié)構(gòu)。組合能讓客戶以一致的方式處理個別對象以及對象組合。

組合模式類圖: 這里寫圖片描述 Client:客戶使用Component接口操作組合中的對象。 Component:Component為組合中的所有對象定義一個接口,不管是組合還是節(jié)點,Component可以為add(),remove(),eachChild()實現(xiàn)一些默認的行為。 Leaf:葉節(jié)點沒有孩子。葉節(jié)點通過實現(xiàn)Composite支持的操作,定義了組合內(nèi)元素的行為。 Composite:Composite的角色是要定義組件的行為,而這樣的組件具有子節(jié)點。

抽象類Component代碼實現(xiàn):

public abstract class Component { String name; public Component(String name){ this.name = name; } public abstract void Add(Component component); public abstract void remove(Component component); public abstract void eachChild();}

Leaf類代碼實現(xiàn):

public class Leaf extends Component{ public Leaf(String name) { super(name); // TODO Auto-generated constructor stub } @Override public void Add(Component component) { // TODO Auto-generated method stub } @Override public void remove(Component component) { // TODO Auto-generated method stub } @Override public void eachChild() { // TODO Auto-generated method stub System.out.Composite類代碼實現(xiàn):

public class Composite extends Component{ ArrayList<Component> list = new ArrayList<Component>(); public Composite(String name) { super(name); // TODO Auto-generated constructor stub } @Override public void Add(Component component) { // TODO Auto-generated method stub list.add(component); } @Override public void remove(Component component) { // TODO Auto-generated method stub list.remove(component); } @Override public void eachChild() { // TODO Auto-generated method stub System.out.println("節(jié)點:"+name); for(Component component : list){ component.eachChild(); } }}

Client類代碼實現(xiàn):

public class Client { public static void main(String[] args){ Component rootComposite = new Composite("根節(jié)點"); Component leftComposite = new Composite("左子節(jié)點"); Component rightComposite = new Composite("右子節(jié)點"); Component leftleaf1 = new Leaf("左葉節(jié)點1"); Component leftleaf2 = new Leaf("左葉節(jié)點2"); leftComposite.Add(leftleaf1); leftComposite.Add(leftleaf2); rootComposite.Add(leftComposite); rootComposite.Add(rightComposite); rootComposite.eachChild(); }}

運行結(jié)果:

節(jié)點:根節(jié)點節(jié)點:左子節(jié)點葉節(jié)點:左葉節(jié)點1葉節(jié)點:左葉節(jié)點2節(jié)點:右子節(jié)點
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 开远市| 本溪市| 宜兴市| 石嘴山市| 宁乡县| 泗水县| 安福县| 绥德县| 遵化市| 通海县| 清涧县| 邓州市| 津市市| 肇庆市| 安吉县| 彩票| 丹凤县| 德江县| 漳州市| 武城县| 石楼县| 共和县| 高要市| 梧州市| 宝坻区| 嘉善县| 梅河口市| 大关县| 中西区| 桃园市| 泸定县| 益阳市| 河北区| 革吉县| 澄江县| 宕昌县| 电白县| 安陆市| 县级市| 大埔区| 安福县|