装潢者形式

标签: 设想形式

什么是装潢者形式?

装潢者形式,个中的重点天然就在“装潢”这两个字上面,在一样平常生涯中许多东西都是须要装潢的,装潢的目标是为了本来的物品越发的悦目,或者是加个装潢让物品越发有用,装潢平常都能够为本来的物品增加一些新的功用,而增加的装潢在增加新的功用的时刻也不会转变本来的物品。

那末在编程中的装潢实在和生涯当中的装潢也是一个原理。所以装潢者形式的一个基础的准绳就是在不转变对象本身的基础上,在顺序运转时期给对象动态的增加职责,能够使得功用变得可插拔越发的天真。

模仿传统面向对象言语的装潢者形式

下面经由过程一个简朴的例子来体味一下装潢者形式:

假定如今我们在编写一个飞机大战的游戏,跟着品级的上升我们的飞机功用不停的加强,一开始只能发射枪弹,二级以后能够发射导弹了,三级以后能够发送原枪弹了。

起首完成一个飞机类:

var Plane = function () {}
Plane.prototype.fire = function () {
    console.log('发射一般枪弹')
}

接下来增加两个装潢类,离别完成发射原枪弹和导弹:

var MissileDecorator = function (plane) {
    this.plane = plane
}
MissileDecorator.prototype.fire = function () {
    this.plane.fire()
    console.log('发射导弹')
}
var AtomDecorator = function (plane) {
    this.plane = plane
}
AtomDecorator.prototype.fire = function () {
    this.plane.fire()
    console.log('发射原枪弹')
}

导弹类和原枪弹类的组织函数都接收参数plane对象,而且保存这个参数,在实行他们本身的操纵以外还实行plane的fire要领。

这模样每被装潢一次以后本来的类就新增了一个功用,而且原始的类也没有被转变。

运用:

var plane = new Plane();
plane = new MissileDecorator( plane );
plane = new AtomDecorator( plane );
plane.fire();
// 离别输出: 发射一般枪弹、发射导弹、发射原枪弹

装潢者也是包装容器

从上面的例子能够看到,每经由一次装潢就相当于在本来的类外部包装了一层对象,形成了一条包装链,要求跟着这条包装链顺次通报到一切的对象,每一个对象都邑有机会来处置惩罚这个要求。

作者简介:李成文,芦苇科技web前端开辟工程师,善于网站建立、民众号开辟、微信小顺序开辟、小游戏、民众号开辟,专注于前端范畴框架、交互设想、图象绘制、数据剖析等研讨,接见
www.talkmoney.cn 相识更多。

    原文作者:广州芦苇科技前端
    原文地址: https://segmentfault.com/a/1190000017476823
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞