利用中间件模式简化代码逻辑

Posted mrzhu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用中间件模式简化代码逻辑相关的知识,希望对你有一定的参考价值。

当我们在编写业务代码时候,我们无法避免有些业务逻辑复杂而导致业务代码写得又长又乱,如果再加上时间紧凑情况下写出来的代码估计会更让人抓狂。以至于我们一直在寻求更好的架构设计和更好的代码设计,这是一个没有终点的求知之路,但是在这条路上会越走越好。

 

function Middleware()
                this.cache = [];
            

            Middleware.prototype.use = function(fn)
                if(typeof fn !== ‘function‘)
                    throw ‘middleware must be a function‘;
                
                this.cache.push(fn);
                return this;
            

            Middleware.prototype.next = function()
                if(this.middlewares && this.middlewares.length > 0 )
                    var ware = this.middlewares.shift();
                    ware.call(this, this.next.bind(this));
                
            
            Middleware.prototype.handleRequest = function()//执行请求
                this.middlewares = this.cache.map(function(fn)//复制
                    return fn;
                );
                this.next();
            

            var middleware = new Middleware();
            middleware.use(function(next)
                console.log(1);
                next();
                console.log(‘1结束‘);
            );
            middleware.use(function(next)
                console.log(2);
                next();
                console.log(‘2结束‘);
            );
            middleware.use(function(next)
                console.log(3);
                console.log(‘3结束‘);
            );
            middleware.use(function(next)
            console.log(4);next();console.log(‘4结束‘);
            );
            middleware.handleRequest();

  

以上是关于利用中间件模式简化代码逻辑的主要内容,如果未能解决你的问题,请参考以下文章

《重构与模式》简化-积木系列

是否有在单个活动中处理多个片段的 Android 设计模式?

学习设计模式之外观模式

为啥我的 C 代码片段不起作用?简化版可以。为 unsigned long long 传递不带 VA_ARGS 的 args

php 算法?

简化条件表达式