程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 用最簡單的例子理解復合模式(Composite Pattern),compositepattern

用最簡單的例子理解復合模式(Composite Pattern),compositepattern

編輯:C#入門知識

用最簡單的例子理解復合模式(Composite Pattern),compositepattern


在顯示樹形結構時,復合模式有很好的體現。本篇顯示如下部門結構:

以上,有的節點包含子節點,有的節點部包含子節點。不管是什麼節點,每個節點就代表一個部門。

 

首先設計一個關於部門的抽象基類。

    public abstract class DepartmentComponent
    {
        public string Name { private set; get; }
        public DepartmentComponent(string name)
        {
            this.Name = name;
        }
        public virtual void PrintSupervisorOf(int spacing)
        {
            for (int counter = 0; counter < spacing; counter++)
            {
                Console.Write(" ");
            }
            Console.WriteLine(Name);
        }
    }

以上,通過構造函數給屬性賦值,通過PrintSupervisorOf(int spacing)方法打印出節點的名稱。

 

接下來設計包含子節點的節點。該類維護著DepartmentComponent類型的集合,提供方法向這個集合中添加節點或從集合中刪除節點。

    public class DepartmentComposite : DepartmentComponent
    {
        private IList<DepartmentComponent> employees;
        public DepartmentComposite(string name) : base(name)
        {
            employees = new List<DepartmentComponent>();
        }
        public void AddDepartment(DepartmentComponent e)
        {
            employees.Add(e);
        }
        public void RemoveDepartment(DepartmentComponent e)
        {
            employees.Remove(e);
        }
        public override void PrintSupervisorOf(int spacing)
        {
            base.PrintSupervisorOf(spacing);
            foreach (DepartmentComponent e in employees)
            {
                e.PrintSupervisorOf(spacing + 1);
            }
        }
    }

以上 PrintSupervisorOf(int spacing)方法重寫了抽象基類的方法,不僅把本節點的名稱打印出來,還使用遞歸把所有子節點的名稱顯示出來。

 

最後設計部包含子節點的節點。

    public class Department : DepartmentComponent
    {
        public Department(string name) : base(name)
        {
            
        }
        public override void PrintSupervisorOf(int spacing)
        {
            base.PrintSupervisorOf(spacing);
        }
    }

 

客戶端部分。

    class Program
    {
        static void Main(string[] args)
        {
            DepartmentComposite salesDepartment1 = new DepartmentComposite("銷售部1");
            Department zhangsan = new Department("張三");
            Department lisi = new Department("李四");
            DepartmentComposite salesDepartment2 = new DepartmentComposite("銷售部2");
            DepartmentComposite specialDepartment = new DepartmentComposite("銷售部2特別行動組");
            Department wangwu = new Department("王五");
            Department zhaoliu = new Department("趙六");
            DepartmentComposite salesDepartment = new DepartmentComposite("銷售部");
            salesDepartment.AddDepartment(salesDepartment1);
            salesDepartment.AddDepartment(salesDepartment2);
            salesDepartment1.AddDepartment(zhangsan);
            salesDepartment1.AddDepartment(lisi);
            salesDepartment2.AddDepartment(specialDepartment);
            specialDepartment.AddDepartment(wangwu);
            specialDepartment.AddDepartment(zhaoliu);
            salesDepartment.PrintSupervisorOf(0);
            Console.ReadKey();
        }
    }

      


Java中23種設計模式,什是必須了解的?

1、簡單工廠模式(Simple Factory Pattern)
2、建造者模式(Builder Pattern)
3、策略(Strategy)模式
4、工廠方法模式(Factory Method Pattern)
5、抽象工廠模式(Abstract Factory)
6、命令模式(Command Pattern)
7、模版方法(Template Method)
8、單件模式(Single Pattern)
9、原型模式(Prototype Pattern)
 

java中常用到得設計模式有哪幾種?

一共23種設計模式!

按照目的來分,設計模式可以分為創建型模式、結構型模式和行為型模式。
創建型模式用來處理對象的創建過程;結構型模式用來處理類或者對象的組合;行為型模式用來對類或對象怎樣交互和怎樣分配職責進行描述。

創建型模式用來處理對象的創建過程,主要包含以下5種設計模式:
 工廠方法模式(Factory Method Pattern)
 抽象工廠模式(Abstract Factory Pattern)
 建造者模式(Builder Pattern)
 原型模式(Prototype Pattern)
 單例模式(Singleton Pattern)

結構型模式用來處理類或者對象的組合,主要包含以下7種設計模式:
 適配器模式(Adapter Pattern)
 橋接模式(Bridge Pattern)
 組合模式(Composite Pattern)
 裝飾者模式(Decorator Pattern)
 外觀模式(Facade Pattern)
 享元模式(Flyweight Pattern)
 代理模式(Proxy Pattern)

行為型模式用來對類或對象怎樣交互和怎樣分配職責進行描述,主要包含以下11種設計模式:
 責任鏈模式(Chain of Responsibility Pattern)
 命令模式(Command Pattern)
 解釋器模式(Interpreter Pattern)
 迭代器模式(Iterator Pattern)
 中介者模式(Mediator Pattern)
 備忘錄模式(Memento Pattern)
 觀察者模式(Observer Pattern)
 狀態模式(State Pattern)
 策略模式(Strategy Pattern)
 模板方法模式(Template Method Pattern)
 訪問者模式(Visitor Pattern)

推薦你一本好書:《軟件秘笈:設計模式那點事》,裡面講解的23中設計模式例子很生動,容易理解,還有JDK中設計模式應用情況,看了收獲挺大的!百度裡面搜“設計模式”,第一條中設計模式百度百科中就有首推該圖書,浏覽量在20幾萬以上的,不會錯的。好東西大家一起分享!
祝你早日學會設計模式!
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved