C#組合模式實(shí)例詳解
更新時(shí)間:2015年07月16日 11:48:01 作者:宋勇野
這篇文章主要介紹了C#組合模式,實(shí)例分析了C#實(shí)現(xiàn)組合模式的原理與相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
本文實(shí)例講述了C#組合模式。分享給大家供大家參考。具體如下:
Company.cs如下:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { public abstract class Company { protected string name; public Company(string name) { this.name = name; } public abstract void Add(Company c); public abstract void Remove(Company c); public abstract void Display(int depth); public abstract void LineOfDuty(); } }
ConcreteCompany.cs如下:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { public class ConcreteCompany:Company { private List<Company> children = new List<Company>(); public ConcreteCompany(string name) :base(name) {} public override void Add(Company c) { children.Add(c); } public override void Remove(Company c) { children.Remove(c); } public override void Display(int depth) { Console.WriteLine(new String('-',depth)+name); foreach(Company component in children) { component.Display(depth+2); } } public override void LineOfDuty() { foreach(Company component in children) { component.LineOfDuty(); } } } }
FinanceDepartment.cs如下:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { public class FinanceDepartment:Company { public FinanceDepartment(string name) : base(name) { } public override void Add(Company c) { } public override void Remove(Company c) { } public override void Display(int depth) { Console.WriteLine(new String('-',depth)+name); } public override void LineOfDuty() { Console.WriteLine("{0} 財(cái)務(wù)支付管理",name); } } }
HRdepartment.cs如下:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { public class HRdepartment:Company { public HRdepartment(string name) :base(name) { } public override void Add(Company c) { } public override void Remove(Company c) { } public override void Display(int depth) { Console.WriteLine(new String('-',depth)+name); } public override void LineOfDuty() { Console.WriteLine("{0} 招聘培訓(xùn)管理",name); } } }
Program.cs如下:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { ConcreteCompany root = new ConcreteCompany("北京總共司"); root.Add(new HRdepartment("人力部")); root.Add(new FinanceDepartment("財(cái)務(wù)部")); ConcreteCompany comp = new ConcreteCompany("上海分公司"); comp.Add(new HRdepartment("分工司人力部")); comp.Add(new FinanceDepartment("分公司財(cái)務(wù)部")); root.Add(comp); ConcreteCompany comp1 = new ConcreteCompany("南京分部"); comp1.Add(new HRdepartment("南京人力部")); comp1.Add(new FinanceDepartment("南京財(cái)務(wù)部")); comp.Add(comp1); ConcreteCompany comp2 = new ConcreteCompany("杭洲分部"); comp2.Add(new HRdepartment("杭州人事部")); comp2.Add(new FinanceDepartment("杭州財(cái)務(wù)部")); comp.Add(comp2); root.Display(1); Console.ReadKey(); } } }
希望本文所述對大家的C#程序設(shè)計(jì)有所幫助。
您可能感興趣的文章:
相關(guān)文章
C#實(shí)現(xiàn)將RTF轉(zhuǎn)為HTML的示例代碼
RTF文檔即富文本格式(Rich?Text?Format)的文檔。我們在處理文件時(shí),遇到需要對文檔格式進(jìn)行轉(zhuǎn)換時(shí),可以將RTF轉(zhuǎn)為其他格式,如轉(zhuǎn)為DOCX/DOC、PDF或者HTML。本文將利用C#實(shí)現(xiàn)RTF轉(zhuǎn)HTML,需要的可以參考一下2022-04-04C#實(shí)現(xiàn)添加多行文本水印到Word文檔
一般情況下,在Word中添加文字水印僅支持添加一個(gè)文本字樣的水印,由于對不同文檔的設(shè)計(jì)要求,需要在Word文檔中添加平鋪水印效果。本文將介紹如何來實(shí)現(xiàn)該水印效果的方法,感興趣的可以了解一下2022-07-07C# 如何調(diào)用C++ dll string類型返回
這篇文章主要介紹了C# 如何調(diào)用C++ dll string類型返回問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11C# 將字節(jié)流轉(zhuǎn)換為圖片的實(shí)例方法
C# 將字節(jié)流轉(zhuǎn)換為圖片的實(shí)例方法,需要的朋友可以參考一下2013-03-03