摘要:組合模式按照樹形結(jié)構(gòu)來組織對(duì)象,并且表示部分與整體之間的層次結(jié)構(gòu)。該模式將創(chuàng)建一個(gè)包含一組特定對(duì)象該類的對(duì)象的類。該類提供方法修改這組相同的對(duì)象。
設(shè)計(jì)模式-組合模式原文鏈接
譯者:smallclover
個(gè)人翻譯,水平有限,如有錯(cuò)誤歡迎指出,謝謝!
當(dāng)我們需要以相似的方式對(duì)待一組對(duì)象和一個(gè)對(duì)象的時(shí)候使用組合模式。組合模式按照樹形結(jié)構(gòu)來組織對(duì)象,并且表示部分與整體之間的層次結(jié)構(gòu)。這種類型的模式屬于結(jié)構(gòu)型模式的一種,它創(chuàng)建一組樹形結(jié)構(gòu)的對(duì)象。
該模式將創(chuàng)建一個(gè)包含一組特定對(duì)象(該類的對(duì)象)的類。該類提供方法修改這組相同的對(duì)象。
我們將通過下面的例子來展示一個(gè)組織的員工層次結(jié)構(gòu)。
我們有一個(gè)Employee類,該類扮演組合的角色。CompositePatternDemo,我們的demo類將使用Employee類來 打印一個(gè)公司的層次結(jié)構(gòu)。
第一步創(chuàng)建一個(gè)Employee類,該類持有一個(gè)Employee對(duì)象集合。
Employee.java
import java.util.ArrayList; import java.util.List; public class Employee { private String name; private String dept; private int salary; private List第二步subordinates; // constructor public Employee(String name,String dept, int sal) { this.name = name; this.dept = dept; this.salary = sal; subordinates = new ArrayList (); } public void add(Employee e) { subordinates.add(e); } public void remove(Employee e) { subordinates.remove(e); } public List getSubordinates(){ return subordinates; } public String toString(){ return ("Employee :[ Name : " + name + ", dept : " + dept + ", salary :" + salary+" ]"); } }
使用這個(gè)Employee類,創(chuàng)建并且打印employee的層次結(jié)構(gòu)。
CompositePatternDemo.java
public class CompositePatternDemo { public static void main(String[] args) { Employee CEO = new Employee("John","CEO", 30000); Employee headSales = new Employee("Robert","Head Sales", 20000); Employee headMarketing = new Employee("Michel","Head Marketing", 20000); Employee clerk1 = new Employee("Laura","Marketing", 10000); Employee clerk2 = new Employee("Bob","Marketing", 10000); Employee salesExecutive1 = new Employee("Richard","Sales", 10000); Employee salesExecutive2 = new Employee("Rob","Sales", 10000); CEO.add(headSales); CEO.add(headMarketing); headSales.add(salesExecutive1); headSales.add(salesExecutive2); headMarketing.add(clerk1); headMarketing.add(clerk2); //print all employees of the organization System.out.println(CEO); for (Employee headEmployee : CEO.getSubordinates()) { System.out.println(headEmployee); for (Employee employee : headEmployee.getSubordinates()) { System.out.println(employee); } } } }第三步
校驗(yàn)輸出。
Employee :[ Name : John, dept : CEO, salary :30000 ] Employee :[ Name : Robert, dept : Head Sales, salary :20000 ] Employee :[ Name : Richard, dept : Sales, salary :10000 ] Employee :[ Name : Rob, dept : Sales, salary :10000 ] Employee :[ Name : Michel, dept : Head Marketing, salary :20000 ] Employee :[ Name : Laura, dept : Marketing, salary :10000 ] Employee :[ Name : Bob, dept : Marketing, salary :10000 ]
雞湯:-D
我必須努力
i have to work hand
私は努力しなければならない
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/65770.html
摘要:大意就是作者把種不斷的重組歸納抽象直道最后抽象為一種設(shè)計(jì)模式,。而所有的關(guān)注的核心問題就是如何控制信息流但是我個(gè)人認(rèn)為核心是如何解耦。再根據(jù)信息流劃分出對(duì)象在系統(tǒng)中擔(dān)任的種角色,。所以歸為一種核心所有的的職責(zé)都是控制。 Overview 今天看了YouTube上的一個(gè)講Design Pattern的視頻,把這個(gè)視頻的大意給大家分享一下,該視頻的作者是Anthony Ferrara。 ...
摘要:調(diào)用者對(duì)象會(huì)尋找合適的并且能夠處理該命令的對(duì)象,然后把該命令傳遞給相應(yīng)的對(duì)象處理。緊接著創(chuàng)建一個(gè)類代表請(qǐng)求。創(chuàng)建具體的命令類和實(shí)現(xiàn)接口,它們將會(huì)作為具體的命令被處理。代表調(diào)用者,它能獲得并且發(fā)出命令。 原文連接譯者 smallclover希望對(duì)大家有所幫助。謝謝!(●?●) 設(shè)計(jì)模式-命令模式 命令模式是一種數(shù)據(jù)驅(qū)動(dòng)的設(shè)計(jì)模式,屬于行為型模式這一類。命令模式會(huì)將一個(gè)請(qǐng)求包裝成一個(gè)對(duì)象并...
摘要:在代理模式中,我們將創(chuàng)建一個(gè)對(duì)象,該對(duì)象在在接口中持有原始對(duì)象,以對(duì)外部提供它的功能。實(shí)現(xiàn)我們將創(chuàng)建一個(gè)接口并且創(chuàng)建具體類實(shí)現(xiàn)接口。 原文鏈接譯者:smallclover希望對(duì)你們有所幫助,謝謝閱讀! 設(shè)計(jì)模式-代理模式 在代理模式中,我們使用一個(gè)類來代表另一個(gè)類的功能。這種類型的設(shè)計(jì)模式屬于結(jié)構(gòu)型設(shè)計(jì)模式的一種。在代理模式中,我們將創(chuàng)建一個(gè)對(duì)象,該對(duì)象在在接口中持有原始對(duì)象,以對(duì)外部...
摘要:實(shí)現(xiàn)我們將創(chuàng)建一個(gè)接口,并且創(chuàng)建具體的類實(shí)現(xiàn)它。接下來我們需要聲明一個(gè)門面類。,我們的類將通過使用類來展示這些結(jié)果。 原文鏈接譯者:smallclover希望對(duì)大家有所幫助!Thanks for your watching 門面模式 門面模式隱藏系統(tǒng)的復(fù)雜性同時(shí)會(huì)提供一個(gè)接口給用戶,使得用戶可以使用該系統(tǒng)。這種類型的設(shè)計(jì)模式屬于結(jié)構(gòu)型模式的一種,它將會(huì)添加一個(gè)接口到現(xiàn)有的系統(tǒng)當(dāng)中,用戶...
摘要:迭代器模式屬于行為型模式下的一種。實(shí)現(xiàn)我們將創(chuàng)建一個(gè)接口,該接口描述迭代所需要的方法緊接著聲明了一個(gè)接口,該接口返回一個(gè)對(duì)象。我們會(huì)創(chuàng)建具體的類實(shí)現(xiàn)接口和接口,并去使用它們。第三步使用獲得迭代器并且打印。 原文地址譯者 smallclover希望對(duì)你們有所幫助 設(shè)計(jì)模式-迭代器模式 迭代器是Java和.Net程序環(huán)境下經(jīng)常使用的一種設(shè)計(jì)模式。這種設(shè)計(jì)模式通常用來獲取能順序訪問集合對(duì)元素...
閱讀 2483·2021-11-23 10:04
閱讀 1561·2021-09-02 15:21
閱讀 947·2019-08-30 15:44
閱讀 1116·2019-08-30 10:48
閱讀 769·2019-08-29 17:21
閱讀 3628·2019-08-29 13:13
閱讀 2036·2019-08-23 17:17
閱讀 1841·2019-08-23 17:04