設計模式漫談之組合模式

Wang_Charle發表於2018-04-05

清明節了,我只有大年初一祭祖。所以也沒回家,看了我的團長我的團,看的頭暈,所以告訴自己不能這樣看下去了,否則這三天又白過了,雖然我沒女朋友,已經單身好幾年了,但是孤獨的日子,我應該更充實。

突然感覺程式設計師如果走技術路線,壓力挺大的。學不完的技術,否則競爭力沒有。所以老程式設計師,最關鍵的就是程式設計思想。玩程式設計思想就是玩CPU和記憶體的,以計算機的思維命令計算機。

呼叫方法的過程就是進棧的過程,最後呼叫的,先出棧執行。

今天扯組合模式。

資料庫經典的主外來鍵關係是這樣操作的,插入的時候,必須先插主表,再插從表,刪除的時候必須先刪從表,再刪主表。

 

組合在表示物件之間關係的時候是表示整體與部分之間的關係。

設計模式主要是解決類似問題的一種解決方案。

現在上例子,我來解釋:

//抽象類描述是個什麼東西(建構函式),大概能幹啥(抽象方法)

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();

}

//具體的整體部分

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();
}
}

}

//部分1

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} 員工招聘培訓管理”, name);
}
}

//部分2

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} 公司財務收支管理”, name);
}

}

總結:組合模式描述的是整體與部分的關係。簡單理解為物件與物件集合的關係。不扯了,工作5年以上的程式設計師建議看看C或彙編,這樣對程式設計思想有很大的指導,也可讓自己進入新的境界。

看了,我的團長我的團,感悟到人確實要充滿希望的活著,也不能太安逸。

 

相關文章