【发布时间】: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