欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

设计模式漫谈之组合模式

程序员文章站 2022-03-26 17:57:36
清明节了,我只有大年初一祭祖。所以也没回家,看了我的团长我的团,看的头晕,所以告诉自己不能这样看下去了,否则这三天又白过了,虽然我没女朋友,已经单身好几年了,但是孤独的日子,我应该更充实。 突然感觉程序员如果走技术路线,压力挺大的。学不完的技术,否则竞争力没有。所以老程序员,最关键的就是编程思想。玩 ......

清明节了,我只有大年初一祭祖。所以也没回家,看了我的团长我的团,看的头晕,所以告诉自己不能这样看下去了,否则这三天又白过了,虽然我没女朋友,已经单身好几年了,但是孤独的日子,我应该更充实。

突然感觉程序员如果走技术路线,压力挺大的。学不完的技术,否则竞争力没有。所以老程序员,最关键的就是编程思想。玩编程思想就是玩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或汇编,这样对编程思想有很大的指导,也可让自己进入新的境界。

看了,我的团长我的团,感悟到人确实要充满希望的活着,也不能太安逸。