【问题标题】:delegation vs aggregation vs consultation委托 vs 聚合 vs 协商
【发布时间】:2018-01-20 09:13:30
【问题描述】:

这些术语有什么区别,你能举个小例子吗?

【问题讨论】:

    标签: language-agnostic concept


    【解决方案1】:

    聚合:来自http://en.wikipedia.org/wiki/Aggregate_pattern

    在设计模式中,聚合是 不是设计模式,而是指 到一个对象,例如列表、向量、 或发电机,它提供了 用于创建迭代器的接口。

    元素的简而言之包含0个或多个其他类型的其他元素。

    public class MyAggregation 
    {   
       protected List<MyAggregates> aggregates = new List<MyAggregates>();
    
       public void add( MyAggregate element )
       {
            aggregates.Add( element );    
       }
    }
    

    代表:来自http://en.wikipedia.org/wiki/Delegation_pattern

    在软件工程中, 委托模式是一种设计模式 在面向对象编程中 一个对象,而不是执行一个对象 在其规定的任务中,代表们认为 任务到关联的帮助对象

    意思是某个类使用另一个对象来做某事。

    public interface IExceptionHandler
    {
        void handle( string filename );
    }
    
    public class FileDeleteExceptionHandler : IExceptionHandler
    {
       public void handle( string filename )
       {
          File.Remove( filename );
       }
    }
    
    
    public class MyExceptionHandler
    {
        protected IExceptionHandler exceptionHandler;
    
        public MyExceptionHandler( IExceptionHandler theHandler )
        {
           this.exceptionHandler = theHandler;
        }
    
        public void handleException( string filename )
        {
           excpetionHandler.handle( filename );
        }
    }
    

    或者在 C# 中委托可以只引用一个委托函数,参见http://msdn.microsoft.com/de-de/library/900fyy8e%28VS.80%29.aspx

    咨询我一无所知,对不起

    马里奥

    注意:我实际上并没有编译上面的代码。

    【讨论】:

      【解决方案2】:

      有委托和咨询的区别here的说明。

      似乎大多数人所说的委托可能更恰当地称为协商。

      我猜想参考中描述的更正式意义上的委托将被实现为一个抽象基类,委托给一个具体类。

      【讨论】:

        【解决方案3】:

        委托、聚合和咨询不是设计模式。它们是帮助我们描述设计模式的概念。 for more

        组合是一种将简单对象或数据类型组合成更复杂对象(即作为一个单元)的方法。组合是许多基本数据结构的关键组成部分

        聚合不同于普通的组合,它并不意味着所有权。在组合中,当拥有对象被销毁时,包含的对象也会被销毁。在聚合中,这不一定是正确的

        委托是将任务交给程序的另一部分的简单而强大的概念。在面向对象编程中,它用于描述一个对象将任务分配给另一个对象的情况,称为委托

        面向对象编程中的

        咨询,当一个对象的方法实现包括将相同消息发送到另一个组成对象的消息时,就会发生这种情况。

        维基:Delegation Composition Consultation

        【讨论】:

          猜你喜欢
          • 2011-12-13
          • 2013-06-10
          • 2011-02-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-03-24
          • 1970-01-01
          相关资源
          最近更新 更多