摘要:組合模式按照樹形結構來組織對象,并且表示部分與整體之間的層次結構。該模式將創建一個包含一組特定對象該類的對象的類。該類提供方法修改這組相同的對象。
設計模式-組合模式原文鏈接
譯者:smallclover
個人翻譯,水平有限,如有錯誤歡迎指出,謝謝!
當我們需要以相似的方式對待一組對象和一個對象的時候使用組合模式。組合模式按照樹形結構來組織對象,并且表示部分與整體之間的層次結構。這種類型的模式屬于結構型模式的一種,它創建一組樹形結構的對象。
該模式將創建一個包含一組特定對象(該類的對象)的類。該類提供方法修改這組相同的對象。
我們將通過下面的例子來展示一個組織的員工層次結構。
我們有一個Employee類,該類扮演組合的角色。CompositePatternDemo,我們的demo類將使用Employee類來 打印一個公司的層次結構。
第一步創建一個Employee類,該類持有一個Employee對象集合。
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+" ]"); } }
使用這個Employee類,創建并且打印employee的層次結構。
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); } } } }第三步
校驗輸出。
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
私は努力しなければならない
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/65770.html
摘要:大意就是作者把種不斷的重組歸納抽象直道最后抽象為一種設計模式,。而所有的關注的核心問題就是如何控制信息流但是我個人認為核心是如何解耦。再根據信息流劃分出對象在系統中擔任的種角色,。所以歸為一種核心所有的的職責都是控制。 Overview 今天看了YouTube上的一個講Design Pattern的視頻,把這個視頻的大意給大家分享一下,該視頻的作者是Anthony Ferrara。 ...
摘要:調用者對象會尋找合適的并且能夠處理該命令的對象,然后把該命令傳遞給相應的對象處理。緊接著創建一個類代表請求。創建具體的命令類和實現接口,它們將會作為具體的命令被處理。代表調用者,它能獲得并且發出命令。 原文連接譯者 smallclover希望對大家有所幫助。謝謝!(●?●) 設計模式-命令模式 命令模式是一種數據驅動的設計模式,屬于行為型模式這一類。命令模式會將一個請求包裝成一個對象并...
摘要:在代理模式中,我們將創建一個對象,該對象在在接口中持有原始對象,以對外部提供它的功能。實現我們將創建一個接口并且創建具體類實現接口。 原文鏈接譯者:smallclover希望對你們有所幫助,謝謝閱讀! 設計模式-代理模式 在代理模式中,我們使用一個類來代表另一個類的功能。這種類型的設計模式屬于結構型設計模式的一種。在代理模式中,我們將創建一個對象,該對象在在接口中持有原始對象,以對外部...
摘要:實現我們將創建一個接口,并且創建具體的類實現它。接下來我們需要聲明一個門面類。,我們的類將通過使用類來展示這些結果。 原文鏈接譯者:smallclover希望對大家有所幫助!Thanks for your watching 門面模式 門面模式隱藏系統的復雜性同時會提供一個接口給用戶,使得用戶可以使用該系統。這種類型的設計模式屬于結構型模式的一種,它將會添加一個接口到現有的系統當中,用戶...
摘要:迭代器模式屬于行為型模式下的一種。實現我們將創建一個接口,該接口描述迭代所需要的方法緊接著聲明了一個接口,該接口返回一個對象。我們會創建具體的類實現接口和接口,并去使用它們。第三步使用獲得迭代器并且打印。 原文地址譯者 smallclover希望對你們有所幫助 設計模式-迭代器模式 迭代器是Java和.Net程序環境下經常使用的一種設計模式。這種設計模式通常用來獲取能順序訪問集合對元素...
閱讀 2424·2021-11-23 10:04
閱讀 1494·2021-09-02 15:21
閱讀 892·2019-08-30 15:44
閱讀 1061·2019-08-30 10:48
閱讀 707·2019-08-29 17:21
閱讀 3554·2019-08-29 13:13
閱讀 1983·2019-08-23 17:17
閱讀 1784·2019-08-23 17:04