面向切面編程也稱AOP,主要作用是將與核心業務邏輯無關的功能抽離出來,以動態織入的方式摻入業務邏輯模塊中。如日誌記錄功能等。可以保持業務邏輯的純淨,高內聚性;便於複用日誌模塊等
- 裝飾器模式
給對象動態添加職責(即用即付)的方式爲裝飾器模式
實現一個插件式的表單驗證:校驗+提交
一般實現:
裝飾器實現:function formSubmit(obj){ const {tel,name} = obj if(!!tel){ console.log('手機號不能爲空') return false } if(!!name){ console.log('用戶名不能爲空') return false } ajax('https://xxx.com/login',obj) }
function validForm(obj){ const {tel,name} = obj if(!!tel){ console.log('手機號不能爲空') return false } if(!!name){ console.log('用戶名不能爲空') return false } } function postForm(){ ajax('https://xxx.com/login',obj) } function before(beforeFn,fn){ return function mixFn(...rest){ if(!beforeFn.apply(this,reset)){ return false } return fn.apply(this,reset) } } const formSubmit = beforeFn(validForm,postFrom)