【问题标题】:Prototype pattern vs creator delegate原型模式与创建者委托
【发布时间】:2014-09-12 08:46:46
【问题描述】:

所以我今天阅读了prototype pattern,发现我实际上多次遇到这个编程问题,而我自己却没有意识到。

通过阅读该文章和维基百科,我的理解似乎是:

使用原型模式克隆现有对象,然后更改其 属性,而不是尝试从头开始创建一个 无法事先知道它的构造函数或它将是什么。

我通常解决这个问题的方法是使用返回对象的函数委托:

// Pseudocode

// Library Routine
function GetTasks(CreateTaskDelegate callback) {
    var task = array();
    foreach(var rows as row) {
        tasks.push(callback($row));
    }
    return tasks;
}

// Library Interface / Abstract Class
class Task { }

// User Concrete Class
class MyCustomTask extends Task {}


// delegate "pattern"
GetTasks(function($row) {
    return new MyCustomTask($row);
});

这与原型模式相比如何?看起来原型模式的适用范围比较窄,那它还有什么用处呢?

【问题讨论】:

    标签: design-patterns prototype-pattern


    【解决方案1】:

    假设您的creator delegate 实际上是factory method 模式,我可以说prototypefactory method 之间的区别是:

    1. Factory methodcreate patterns 中最简单的。 + 很简单。 - 需要创建子类才能创建不同类型的产品。
    2. Prototype 使用另一种方法。它不是继承,而是使用对象的组合。在这种情况下,有一些对象知道如何创建产品(原型)并将其分配为参数。 + 是敏捷性。 - 是复杂性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-27
      • 2011-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多