返回顶部
首页 > 资讯 > 前端开发 > JavaScript >JavaScript状态模式及适配器模式使用讲解
  • 525
分享到

JavaScript状态模式及适配器模式使用讲解

JavaScript状态模式JavaScript适配器模式 2022-12-30 12:12:26 525人浏览 安东尼
摘要

目录一、状态模式1.基本实现2.状态模式的优缺点3.状态模式中的性能优化点二、适配器模式一、状态模式 允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类 1.基本

一、状态模式

允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类

1.基本实现

//下面以一个开灯程序演示状态模式
//灯共用三种状态,分别是‘关闭',‘弱光‘和'强光‘。每次按下开关按钮都会换挡。
let OfflightState = function (light) {
    this.light = light;
}
OfflightState.prototype.buttonPressed = function () {
    console.light('弱光');
    this.light.setState(this.light.weakLightState);
}
let WeakLightState = function (light) {
    this.light = light;
}
WeakLightState.prototype.buttonPressed = function () {
    console.log('强光')
    this.light.setState(this.light.strongLightState);
}
let StrongLightState = function (light) {
    this.light = light;
}
StrongLightState.prototype.buttonPressed = function () {
    console.log('关闭');
    this.light.setState(this.light.offlightState)
}
let Light = function () {
    this.offlightState = new OfflightState(this); 
    this.weakLightState = new WeakLightState(this);
    this.strongLightState = new StrongLightState(this);
    this.button = null;
}
Light.prototype.init = function () { 
    let button = document.createElement('button');
    self = this;
    this.button = document.body.appendChild(button);
    this.button.innerhtml = '开关';
    this.button.currState = this.offlightState;
    this.button.onclick = function () { 
        self.currState.buttonPressed;
    }
}
Light.prototype.setState = function (newState) {
    this.currState = newState;
}
let light = new Light();
light.init();

以上代码实现了一个基本的状态模式,状态的切换规律事先被定义好在各个状态类中,主体上无需关心切换的细节。如果日后又新增了一个状态,那我们只要编写好新的状态类,加入到原有代码中就可以了。

2.状态模式的优缺点

(1)状态模式定义了状态与行为之间的关系,并将它们封装在一个类里。通过增加新的状态类,很容易增加新的状态和转换

(2)避免Context无限膨胀,状态切换的逻辑被分布在状态类中,也去掉了Context中原本过多的分支。

(3)用对象代替字符串来记录当前状态,使得状态的切换更加一目了然。

(4)Context中的请求动作和状态类中封装的行为可以非常容易地独立变化而互不影响。

3.状态模式中的性能优化

(1)状态可以等待需要的时候再创建,也可以一开始就创建好,具体依据实际场景、

(2)state对象可以在多个类之间共享。

二、适配器模式

解决两个软件实体间接口不兼容问题

适配器模式的应用

let GoogleMap = {
    show: function () {
        console.log('开始渲染谷歌地图');
    }
}
let baiduMap = {
    show: function () {
        console.log('开始渲染百度地图');
    }
}
let renderMap = function (map) {
    map.show();
}

let baiduMapAdapter = {
    show: function () {
        return baiduMap.display();
    }
}
renderMap(baiduMapAdapter);

到此这篇关于javascript状态模式及适配器模式使用讲解的文章就介绍到这了,更多相关JavaScript状态模式内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: JavaScript状态模式及适配器模式使用讲解

本文链接: https://lsjlt.com/news/176281.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • JavaScript状态模式及适配器模式使用讲解
    目录一、状态模式1.基本实现2.状态模式的优缺点3.状态模式中的性能优化点二、适配器模式一、状态模式 允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类 1.基本...
    99+
    2022-12-30
    JavaScript状态模式 JavaScript适配器模式
  • Golang设计模式之适配器模式详细讲解
    目录适配器模式概念示例适配器模式 适配器是一种结构型设计模式, 它能使不兼容的对象能够相互合作。 适配器可担任两个对象间的封装器, 它会接收对于一个对象的调用, 并将其转换为另一个对...
    99+
    2023-01-11
    Go适配器模式 Go设计模式
  • JavaScript设计模式之命令模式和状态模式详解
    目录命令模式命令模式介绍代码实现状态模式状态模式介绍代码实现小结命令模式 命令模式介绍 命令模式(Command)的定义是:用于将一个请求封装成一个对象,从而使你可用不同的请求对客户...
    99+
    2024-04-02
  • JavaScript设计模式适配器模式实例
    前言: 适配器设计模式可以用生活中常用的笔记本电脑来做例子,笔记本使用电压在20v左右,但是我们家用电压在220v左右,所以我们希望用家用电适配对应的笔记本电压,这个时候就需要使用电...
    99+
    2024-04-02
  • JavaScript适配器模式的应用详解
    目录适配器模式适配器模式的应用小结适配器模式 适配器模式的作用是解决两个软件实体间的接口不兼容的问题。使用适配器模式之后,原本由于接口不兼容而不能工作的两个软件实体可以一起工作。 适...
    99+
    2022-11-13
    JavaScript 适配器模式 JavaScript 适配器
  • JavaScript设计模式学习之适配器模式
    目录概述代码实现总结概述 适配器模式是设计模式行为型模式中的一种模式; 定义: 适配器用来解决两个已有接口之间不匹配的问题,它并不需要考虑接口是如何实现,也不用考虑将来该如何修改;适...
    99+
    2024-04-02
  • JavaScript设计模式之原型模式和适配器模式示例详解
    目录原型模式原型模式介绍代码实现适配器模式适配器模式介绍代码实现小结原型模式 原型模式介绍 原型模式是指原型实例指向创建对象的种类,并通过拷贝这些原型创建新的对象,是一种用来创建对象...
    99+
    2024-04-02
  • 一看就懂的JavaScript适配器模式图解及使用示例
    目录引言总结引言 适配器模式是用来解决两个软件实体之间不兼容的问题的设计模式。 举个两实体不匹配例子: 假如这两块要契合在一起,怎么办? 对喽,咱们先给A实体造个适配器,如下: ...
    99+
    2022-12-22
    JavaScript适配器模式 JavaScript适配器模式图解
  • Java设计模式--适配器模式详解
    目录定义结构示例扩展总结定义 适配器模式用于解决接口间的兼容问题。 当我们需要使用某个类提供的接口,但是这个接口与现在的系统需求不符,由于该接口是由第三方提供的,或者是已经在生产上跑...
    99+
    2024-04-02
  • JavaScript的适配器模式介绍
    本篇内容介绍了“JavaScript的适配器模式介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!介&nb...
    99+
    2024-04-02
  • C#适配器模式的使用
    目录前言适配器模式前言 我昨天做了个梦,我梦见我在一条路走,走的时候经过一个房间,里面关着一条边牧和鸡和猪,后来我醒了,我知道那只边牧就是小叶子(哈仔十一的边牧),小叶子具备牧羊和牧...
    99+
    2024-04-02
  • Java设计模式之状态模式详解
    目录1. 状态模式的概述2. 状态模式的结构与实现3. 状态模式的优缺点4. 状态模式的适用场景5. 示例程序的设计与实现1. 状态模式的概述 状态模式是一种通过将对象的状态转换逻辑...
    99+
    2023-05-20
    Java 状态模式 Java 设计模式
  • Android设计模式之适配器模式怎么使用
    适配器模式是一种结构型设计模式,用于将一个类的接口转换成客户端所期望的另一个接口。它允许不兼容的类能够一起工作,通过创建一个适配器类...
    99+
    2023-08-14
    Android
  • Java 设计模式之适配器模式详解
    目录定义结构图使用场景代码实现Java代码实现Python代码实现定义 适配器将一个类的接口,转换成客户期望另一个接口。适配器让原本不兼容的类可以合作无间 结构图 如图所示,两脚插...
    99+
    2024-04-02
  • Java设计模式以虹猫蓝兔的故事讲解适配器模式
    目录什么是适配器模式优点缺点知识点适配器模式实现类适配器长虹剑气火舞旋风剑气火晶石测试对象适配器长虹剑气火舞旋风剑气火晶石测试总结模式: 适配器模式 案例: 虹猫利用火晶石催发火舞旋...
    99+
    2024-04-02
  • 理解JavaScript中的适配器模式Adapter Pattern
    说到:适配器,大家一定不会陌生,所有的充电头,就是适配器,用于适配电源插孔和需要充电的设备; 同理,适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种...
    99+
    2024-04-02
  • Java设计模式之java状态模式详解
    目录状态模式的结构状态模式的角色 示例代码适用场景投票案例认识状态模式状态和行为行为的平行性环境和状态处理对象状态模式优点状态模式的缺点状态模式和策略模式对比参考文章 总结...
    99+
    2024-04-02
  • Java设计模式之状态模式StatePattern详解
    目录概述UML类图状态模式与策略模式谁决定状态转换的流向State是接口还是抽象类应用案例分析状态抽象类可以抽奖的状态奖品发放完毕状态发放奖品的状态不能抽奖状态抽奖活动(Contex...
    99+
    2022-11-13
    Java状态模式 Java State Pattern
  • Java设计模式之适配器模式
    本文通过老王使用纸质书籍阅读小王使用电子书籍的故事,详细说明设计模式中的结构型设计模式之适配器模式,分别对对象适配器和类适配器代码实现,最后为了加深理解,会列举适配器设计模式在JDK...
    99+
    2024-04-02
  • 使用go实现适配器模式
    目录适配器模式定义代码实现优点缺点适用范围参考适配器模式 定义 适配器模式的英文翻译是Adapter Design Pattern。顾名思义,这个模式就是用来做适配的,它将不兼容的接...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作