清明節了,我只有大年初一祭祖。所以也沒回家,看了我的團長我的團,看的頭暈,所以告訴自己不能這樣看下去了,否則這三天又白過了,雖然我沒女朋友,已經單身好幾年了,但是孤獨的日子,我應該更充實。
突然感覺程式設計師如果走技術路線,壓力挺大的。學不完的技術,否則競爭力沒有。所以老程式設計師,最關鍵的就是程式設計思想。玩程式設計思想就是玩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或彙編,這樣對程式設計思想有很大的指導,也可讓自己進入新的境界。
看了,我的團長我的團,感悟到人確實要充滿希望的活著,也不能太安逸。