- 介绍
适配器是将一个类的接口转换为客户希望的另一个接口,适配器模式使得原本接口不兼容而不能一起工作的哪些类(对象)可以一起工作,速成包装器
- 理解
-
var animal = function() {};
animal.prototype.fly = function() {
console.log("飞1");
}
animal.prototype.gugu = function() {
console.log("gugu");
}
var trunck = function() {};
trunck.prototype.fly = function() {
console.log("飞2");
}
trunck.prototype.gaga = function() {
console.log("gaga");
}
/*c创建适合 trunck的适配器*/
var trunckAdapter = function(trunck) {
animal.apply(this);
this.trunck = trunck;
}
trunckAdapter.prototype = new animal(); //适配器属性为需要实现的。
//最终trunk适配器可以调用animal的 gugu方法,单最终自己实现的是自己的方法。
trunckAdapter.prototype.fly = function() {
var nFly = 0;
var nLenFly = 5;
for (; nFly < nLenFly;) {
this.trunck.fly();
nFly = nFly + 1;
}
}
trunckAdapter.prototype.gugu = function() {
this.trunck.gaga();
}
var animal1 = new animal();
animal1.fly();
animal1.gugu();
var trunck1 = new trunck();
trunck1.fly();
trunck1.gaga();
var trunckAdapter1 = new trunckAdapter(trunck1);
trunckAdapter1.fly();
trunckAdapter1.gugu();
该适配器的使用方法,主需要一个类去继承另一个类,从而实现方法,内部调用自己的方法
- 什么时候使用适配器模式
- 使用一个已经存在的对象,此时该方法或属性不符合你的要求
- 你想创建一个可复用的对象,该对象可以与其他不相关的对象或不可见对象协同工作。
- 想使用已经存在的对象,但是不能对每一个都进行原型继承以匹配它的接口,对象适配器可以适配它的父对象接口方法或属性。