美文网首页
JS设计模式-其他1-原型模式 & 桥接模式

JS设计模式-其他1-原型模式 & 桥接模式

作者: 林海_Mense | 来源:发表于2019-03-19 23:09 被阅读0次

其他设计模式系列开始介绍前端不常用的设计模式
有哪些设计模式?

  1. 创建性模式
    原型模式
  2. 结构型模式
    桥接模式 组合模式 享元模式
  3. 行为型模式
    策略模式 模板方法模式 职责链模式 命令模式 备忘录模式 中介者模式 访问者模式 解释器模式

原型模式

概念

clone自己,生成一个新对象
java默认有clone接口,不用自己实现。

JS中的应用 Object.create()
// 一个原型 对象
let prototype = {
    getName: function () {
        return this.first + " " + this.last;
    },
    say: function () {
        alert("hello")
    }
}
// 基于原型创建x
let x = Object.create(prototype);
x.first = "A";
x.last = "B";
alert(x.getName());
x.say();
// 基于原型创建y
let y = Object.create(prototype);
y.first = "C";
y.last = "D";
alert(y.getName());
y.say();
对比JS中的原型prototype
  • prototype 可以理解为ES6 class 的一种底层原理实现
  • 而class是实现面向对象的基础,并不是服务于某个模式
  • 若干年后ES6全面普及,大家可能会忽略掉prototype
  • 但是Object.create却会长久存在

桥接模式

概念
  • 用于把抽象化与实现化解耦
  • 使得二中可以独立变化
    -(未找到JS中的经典应用)
demo

比如我们要画这样一幅图


image.png

黄色圆圈 红色圆圈 黄色三角 红色三角 这样四个图形
代码实现如果混合在一起一般是这个样子的

class ColorShape {
    yellowCircle() {
        console.log("yellow circle")
    }
    redCircle() {
        console.log("red circle")
    }
    yellowTriangle() {
        console.log("yellow triangle")
    }
    redTriangle() {
        console.log("red triangle")
    }
}
// 测试
let cs = new ColorShape();
cs.yellowCircle()
cs.redCircle()
cs.yellowTriangle()
cs.redTriangle()

但是从前端模式来说,我们一般是分离开的,大概是这样的


image.png

画图是画图,填充颜色是填充颜色,比较适合一些复杂性比较大的业务。
代码实现是这个样子的

class Color {
    constructor(name){
        this.name = name;
    }
}
class Shape {
    constructor(name, color){
        this.name = name;
        this.color = color;
    }
    draw(){
        console.log(`${this.color.name} ${this.name}`)
    }
}
// 测试代码
let red = new Color("red");
let yellow = new Color("yellow");
let circle = new Shape("circle", red);
circle.draw();
let triangle = new Shape("triangle", yellow);
triangle.draw();
设计原则验证
  • 抽象和实现分离
  • 符合开放封闭原则

本文资料来自慕课网-双越老师-Javascript 设计模式系统讲解与应用视频课程

相关文章

  • JS设计模式-其他1-原型模式 & 桥接模式

    其他设计模式系列开始介绍前端不常用的设计模式有哪些设计模式? 创建性模式原型模式 结构型模式桥接模式 组合模式 ...

  • 设计模式概括

    设计模式 创建型模式单例模式,工厂模式,抽象工厂模式,建造者模式,原型模式 结构型模式适配器模式,桥接模式,装饰模...

  • 前篇

    一、常见的设计模式? 创建型:工厂方法模式、抽象工厂模式、建造者模式、原型模式、单例模式 结构型:适配器模式、桥接...

  • Android常用设计模式

    设计模式分类 创建型模式工厂方式模式建造者模式抽象工程模式原型模式单例模式 结构型模式桥接模式代理模式享元模式外观...

  • 设计模式-桥接模式

    设计模式-桥接模式 定义 桥接模式(Bridge Pattern)也称为桥梁模式、接口(Interface)模式或...

  • js设计模式-桥接模式

    桥接模式 什么是桥接模式把事物对象和其具体行为、具体特征分离开来,使它们可以各自独立的变化 例子:男生 女...

  • 桥接模式

    设计模式:桥接模式(Bridge)

  • 设计模式——桥接模式

    设计模式——桥接模式 最近公司组件分享设计模式,然而分配给我的是桥接模式。就在这里记录我对桥接模式的理解吧。 定义...

  • 设计模式之桥接模式

    设计模式之桥接模式 1. 模式定义 桥接模式又称柄体模式或接口模式,它是一种结构性模式。桥接模式将抽象部分与实现部...

  • 设计模式

    创建型模式:、抽象工厂模式、原型模式、建造者模式、。 结构型模式:适配器模式、桥接模式、、组合模式、外观模式、享元...

网友评论

      本文标题:JS设计模式-其他1-原型模式 & 桥接模式

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