适配器主要用于接口的转换或者将接口不兼容的类对象组合在一起形成对外统一接口,是一种结构性模式
Adapter模式有以下两种:
- 类适配器模式(使用继承实现)
- 对象适配器(使用委托的适配器)
1、使用继承的适配器
Banner类Print接口:声明2个方法1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18export default class Banner {
private info: string;
constructor(info: string) {
this.info = info;
}
/**
* ShowWithParen
*/
public ShowWithParen(): void {
console.log(`(${this.info})`);
}
/**
* ShowWithAster
*/
public ShowWithAster(): void {
console.log(`*${this.info}*`);
}
}PrintBanner类:扮演适配器的角色,继承Banner类,实现Print接口1
2
3
4export interface Print {
printWeak: () => void;
printStrong: () => void;
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20import Banner from "./Banner";
import { Print } from "./Print";
export default class PrintBanner extends Banner implements Print {
constructor(info: string) {
super(info);
}
/**
* printWeak
*/
public printWeak(): void {
this.ShowWithParen();
}
/**
* printStrong
*/
public printStrong(): void {
this.ShowWithAster();
}
}
2、使用委托的适配器
PrintAbstractClass类
1 | export default abstract class PrintAbstractClass { |
PrintBannerClass类:由于无法同时继承2个类,PrintBannerClass定义为Banner和PrintAbstractClass的子类
1 | import PrintAbstractClass from "./PrintAbstractClass"; |
main函数
1 | import PrintBanner from "./PrintBanner" |
———p—————–
(Hellp)
*Hellp*
———p2—————–
*hell2*
(hell2)
*hell2*
(hell2)
———p3—————–
*test*
(test)