zoukankan      html  css  js  c++  java
  • 设计模式漫谈之组合模式

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

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

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

  • 相关阅读:
    Android应用开发SharedPreferences存储数据的使用方法
    Android ListView不响应OnItemClickListener解决办法
    Java 毫秒转换为日期类型、日期转换为毫秒
    关于android软键盘enter键的替换与事件监听
    如何使用adb命令查看android中的数据库
    android坐标
    getHitRect获取点击控件的位置
    UTC的相互转换(java)
    深入理解Android的startservice和bindservice
    TS格式解析
  • 原文地址:https://www.cnblogs.com/wang-charle/p/8722714.html
Copyright © 2011-2022 走看看