美文网首页
行为委托理论

行为委托理论

作者: VinSmokeW | 来源:发表于2021-02-03 17:41 被阅读0次

为了更好地学习如何更直观地使用 [[Prototype]] ,我们必须认识到它代表的是一种不同
于类的设计模式。

1.1 类理论

假设我们需要在软件中建模一些类似的任务(“XYZ”、“ABC”等)。
如果使用类,那设计方法可能是这样的:定义一个通用父(基)类,可以将其命名为
Task ,在 Task 类中定义所有任务都有的行为。接着定义子类 XYZ 和 ABC ,它们都继承自
Task 并且会添加一些特殊的行为来处理对应的任务。
非常重要的是,类设计模式鼓励你在继承时使用方法重写(和多态),比如说在 XYZ 任务
中重写 Task 中定义的一些通用方法,甚至在添加新行为时通过 super 调用这个方法的原始
版本。你会发现许多行为可以先“抽象”到父类然后再用子类进行特殊化(重写)。

class Task {
  id;
  // 构造函数 Task()
  Task(ID) { id = ID; }
  outputTask() { output( id ); }
}
class XYZ inherits Task {
  label;
  // 构造函数 XYZ()
  XYZ(ID,Label) { super( ID ); label = Label; }
  outputTask() { super(); output( label ); }
}
class ABC inherits Task {
    // ...
}   

1.2 委托理论

现在我们试着来使用委托行为而不是类来思考同样的问题
下面是推荐的代码形式,非常简单:

Task = {
  setID: function(ID) { this.id = ID; },
  outputID: function() { console.log( this.id ); }
};
// 让 XYZ 委托 Task
XYZ = Object.create( Task );
XYZ.prepareTask = function(ID,Label) {
  this.setID( ID );
  this.label = Label;
};
XYZ.outputTaskDetails = function() {
  this.outputID();
  console.log( this.label );
};
// ABC = Object.create( Task );
// ABC ... = ...

在这段代码中, Task 和 XYZ 并不是类(或者函数),它们是对象。 XYZ 通过 Object.
create(..) 创建,它的 [[Prototype]] 委托了 Task 对象。

委托行为意味着某些对象( XYZ )在找不到属性或者方法引用时会把这个请求委托给另一
个对象( Task )。
这是一种极其强大的设计模式,和父类、子类、继承、多态等概念完全不同。在你的脑海中
对象并不是按照父类到子类的关系垂直组织的,而是通过任意方向的委托关联并排组织的。

相关文章

  • 行为委托理论

    为了更好地学习如何更直观地使用 [[Prototype]] ,我们必须认识到它代表的是一种不同于类的设计模式。 1...

  • 行为委托

    1、面向委托的设计思考下列代码: 首先定义一个名为Task的对象,它包含所有任务都可以使用的具体行为。接着对于每个...

  • 行为委托

    这个场景中我们将讲解两个控制器对象,一个用来处理网页的登录form(表单),另一个实际处理服务器的认证(通信) 根...

  • 行为委托

    看起来,React组件中的prop很像是HTML元素的属性,不过HTML组件属性的值都死字符串类型 ,即使是内嵌J...

  • 6 行为委托

    JS中的原型链机制的本质就是对象之间的关联关系。 面向委托的设计 我们需要把思路从类和继承的设计模式转换到委托行为...

  • 未成年人能否办理购房委托公证?

    问题:甲(15岁)申请办理购房委托公证,根据相关法律规定,无民事行为能力人不能办理委托,限制民事行为能力人办理委托...

  • 设计模式-策略模式

    抽取对象行为成算法簇 对象行为委托给算法接口执行

  • 聊聊对象行为委托

    昨天我们聊到了对象的原型,知道了有 new 和 Object.create() 两种操作原型的方式。今天我们来对比...

  • 上卷 第二部分 第六章 行为委托

    面向委托的设计 其实就是jQuery那一套 类理论类的套路就是定义一个基类,里面包含了所有通用的行为,然后在子类添...

  • 2017.11.1

    委托是一种引用方法的类型。 一旦为委托分配了方法,委托将与该方法具有完全相同的行为。委托方法的使用事件可以像其他任...

网友评论

      本文标题:行为委托理论

      本文链接:https://www.haomeiwen.com/subject/pudmtltx.html