(抽象)外观模式 JS实现 ES5 and ES6 node环境下的xml解析

每次拿到一些作业。。。我都试图用JS这门流氓一般的脚本语言实现,之前写了c语言的简单版预处理(包括宏定义替换,.h内容引入和不是很完善的注释删除)

这次的外观模式本以为是比较简单的实现,毕竟就几个类倒来倒去。
事情出乎我的意料,JS甚至耍了我这个初学JS的使用者的流氓,我接受不了。


原来的模式:

用户直接接触所有的子功能,自己决定实现什么效果。

什么是外观模式:

用户不关心功能的实现细节,我们只提供一个能使用功能的接口给用户,中间到底经历了多少个步骤,用户是看不到的。我们在用户和子功能之间添加一层外观类,整合子功能,然后提供给用户调用。

然后我们用js实现:
要用到的知识:类、coomonjs模块语法、node|fs模块、node|xml2js模块、xml语法、node|crypto-js模块,然后是外观模式、开闭原则和抽象思想。

了解的细节:

  • commonjs和es6的引入语法:commonjs只能在运行时确定要引入的模块,换言之,针对我们的需求,require()的括号内可以放置一个变量,ES6就做不到,因为ES6的设计思想是尽量静态化,在编译时就能确定模块的依赖关系,所以跟一个变量就寄了,会报错。这里使用commonjs的引入语法,来实现抽象
  • xml2js模块:解析xml格式的语句 是我们这里实现抽象的一个工具模块
  • ES6增添了类的概念,其实本质上是JS函数的语法糖,但是也香香的。

总体流程:
客户端发起调用–>创建外观类实例–>调用外观类方法–>外观类引入所有的子系统功能,然后执行。

外观类具体步骤:
读取待加密文件内容–>用cryptojs加密–>创建新文件,写入加密后的内容

新外观类具体步骤:
读取待解密文件内容–>用cryptojs解密–>创建新文件,写入解密后的内容

具体代码实现已经上传git了,大家伙自取,后来人自取,虽然概率小很多。

git地址:Facade-Pattern-Demo-JS

Guess you like

Origin blog.csdn.net/weixin_45543674/article/details/121619628