JavaScript設(shè)計模式之原型模式和適配器模式示例詳解
原型模式
原型模式介紹
原型模式是指原型實例指向創(chuàng)建對象的種類,并通過拷貝這些原型創(chuàng)建新的對象,是一種用來創(chuàng)建對象的模式,也就是創(chuàng)建一個對象作為另一個對象的prototype屬性
實現(xiàn)原型模式是在ECMAScript5中,提出的Object.create方法,使用現(xiàn)有的對象來提供新創(chuàng)建的對象的__proto__。
代碼實現(xiàn)
var lynkCoPrototype = {
model: "領(lǐng)克",
getModel: function () {
console.log('車輛模具是:' + this.model);
}
};
var volvo = Object.create(lynkCoPrototype, {
model: {
value: "沃爾沃"
}
});
volvo.getModel();
適配器模式
適配器模式介紹
適配器模式(Adapter)是將一個類(對象)的接口(方法或?qū)傩裕┺D(zhuǎn)化成客戶希望的另外一個接口(方法或?qū)傩裕?,適配器模式使得原本由于接口不兼容而不能一起工作的那些類(對象)可以一些工作。別稱包裝器(wrapper)。
代碼實現(xiàn)
class GooleMap {
show() {
console.log('渲染谷歌地圖')
}
}
class BaiduMap {
show() {
console.log('渲染百度地圖')
}
}
function render(map) {
if (map.show instanceof Function) {
map.show()
}
}
render(new GooleMap()) // 渲染谷歌地圖
render(new BaiduMap()) // 渲染百度地圖
但是假如BaiduMap類的原型方法不叫show,而是叫display,這時候就可以使用適配器模式了,因為我們不能輕易的改變第三方的內(nèi)容。在BaiduMap的基礎(chǔ)上封裝一層,對外暴露show方法。
class GooleMap {
show() {
console.log('渲染谷歌地圖')
}
}
class BaiduMap {
display() {
console.log('渲染百度地圖')
}
}
// 定義適配器類, 對BaiduMap類進行封裝
class BaiduMapAdapter {
show() {
var baiduMap = new BaiduMap()
return baiduMap.display()
}
}
function render(map) {
if (map.show instanceof Function) {
map.show()
}
}
render(new GooleMap()) // 渲染谷歌地圖
render(new BaiduMapAdapter()) // 渲染百度地圖
小結(jié)
- 適配器模式主要解決兩個接口之間不匹配的問題,不會改變原有的接口,而是由一個對象對另一個對象的包裝。
- 適配器模式符合開放封閉原則
以上就是JavaScript設(shè)計模式之原型模式和適配器模式示例詳解的詳細內(nèi)容,更多關(guān)于JavaScript 原型適配器模式的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
javascript數(shù)據(jù)類型之原始類型詳解
這篇文章主要為大家介紹了javascript數(shù)據(jù)類型之原始類型詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-06-06
Vue.js React與Angular流行前端框架優(yōu)勢對比
這篇文章主要為大家介紹了Vue.js React與Angular流行前端框架優(yōu)勢對比,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-03-03

