外观(门面)模式
概念
概念
为了一个相对复杂的接口或者结构提供了一个上层接口供用户使用 通过们门面模式除了简化我们的应用,可将底层调用封装起来,未来如果底层需要变化,将复杂调用包装了一层使其变得更加简单
案例
下面列举一个外观(门面)模式的案例
js
axios.get('/api/user',{
params:{id:"102"}
}).then((res)=>{
console.log(res)
}).catch((err)=>{
console.log(err)
})
axios.post('/api/users',{firstName:'tina',lastName:'xiao'},
{
headers:{"Content-Type":"application/json"}
}).then((res)=>{
console.log('res')
}).catch((err)=>{
console.log(err)
})
// get post 传参并不相同,使用起来会比较麻烦,post还需要手动更新header
// 为了解决上述问题 ==> 门面模式
// ----------------------------------------------------------------
// 优化后
//request.js
import axios from 'axios';
export const get = ((url,params)=>{
return axios.get(url,{params})
})
export const post = ((url,params)=>{
return axios.post(url,{...params}),
{headers:{"Content-Type":"application/json"}}
})
// ComponetB.js
import {get,post} from 'request.js'
get('/api/users',{
id:"0001"
}).then((res)=>{
console.log(res);
}).catch((err)=>{
console.log(err);
});
post('/api/users',{
edu:"本科",
nations:"china"
}).then((res)=>{
console.log(res)
}).catch((err)=>{
console.log(err)
});
应用场景
- 简化复杂接口
- 降低耦合度
- 优化性能
- 提高代码复用率
- 可维护性
特点
- 将某个用起来麻烦且繁琐的功能进行封装,方便使用,其在未来能够更好的应对底层的变化