zoukankan      html  css  js  c++  java
  • js策略模式

    一。遇到的问题

      在用socket接收数据时(包括前后端),会对不同功能的模块分开处理(满足单一开闭等原则),比如聊天模块,聊天里又区分世界聊天以及队伍聊天等,还有一些其他等模块,刚开始会用if else 或者switch 这些来对每个模块来处理,但后面发现,每一次模块的增加都要修改代码,而且 if 语句非常的长,于是使用策略模式来处理。(socket.io有这样的不同模块的分发功能,这里用websocket(websocket可以满足在苹果 安卓 web 微信等地方,但socket.io有些地方需要复杂一些的处理,比如socket.io自带有buffer,而微信中(还是微信小程序,不记得了)不允许有其他的buffer,就会出问题),所以要自个处理不同模块)

    二。需要解决的问题

      单一原则:每个模块的功能互不影响,功能单一

      开闭原则:模块的增加和删除不修改原来的代码

    三。策略模式

    创建 strategy.js 文件

    var strategies = {
        chat: function(message){
        },
    }
    
    module.exports = strategies;

    接着创建 websocket.js 文件

    var strategy = require("./strategy");
    
    。。。
    在接受到的地方直接使用,data[1] 为模块,比如chat模块,data[2] 为数据,需要前后端统一
    strategy[data[1]](data[2]);

    这样子socket的地方就不用再做处理了,全部转移到了strategy.js 文件,现在每个模块就单独在该模块的函数下处理了,增加模块就直接增加函数,在函数里面处理对应的逻辑,实现单一原则,但现在还没有实现开闭原则,接下来可以细点处理,把每个模块(就是对应的函数)自动映射成单独的文件。

  • 相关阅读:
    ZJNU 1129 The sum problem——中级
    用 PHP 实现 POP3 邮件的收取(3)
    用 PHP 实现 POP3 邮件的收取(2)
    PHP4 调用自己编写的 COM 组件
    用 PHPLIB 进行 Session 的管理和认证
    用 PHP 实现 POP3 邮件的收取(1)
    用 PHP 实现 POP3 邮件的解码(1)
    PHP 应用程序的性能优化
    PHP功能齐全的发送邮件类
    怎样在 php 中使用 PDF 文档功能
  • 原文地址:https://www.cnblogs.com/GH-123/p/12388737.html
Copyright © 2011-2022 走看看