设计模式-适配器模式

适配器模式

定义

适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。

适配器模式有以下两种:

  • 类适配器模式(使用继承的适配器)
  • 对象适配器模式(使用委托的适配器)

类图

适配器模式-使用继承类图

适配器模式-使用委托类图

Target(对象)

负责定义所需的方法

Client(请求者)

负责使用Target角色所定义的方法进行具体处理。

Adaptee(被适配)

Adaptee是一个持有既定方法的角色

Adapter(适配)

使用Adaptee的方法来满足Target角色的需求。

示例

继承示例

类图

适配器模式-使用继承类图

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class Banner {
private String string;

public Banner(String string) {
this.string = string;
}

public void showWithParen() {
System.out.println("(" + string + ")");
}

public void showWithAster() {
System.out.println("*" + string + "*");
}
}

Print

1
2
3
4
5
public interface Print {
public abstract void printWeak();
public abstract void printStrong();
}

PrintBanner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class PrintBanner extends Banner implements Print {

public PrintBanner(String string) {
super(string);
}

public void printWeak() {
showWithParen();
}

public void printStrong() {
showWithAster();
}

}

Main

1
2
3
4
5
6
7
8
public class Main {
public static void main(String[] args) {
Print p = new PrintBanner("Hello");
p.printWeak();
p.printStrong();
}
}

委托示例

类图

适配器模式-使用委托类图

委托模式和继承模式的区别主要是在Print类和PringBanner类上

1
2
3
4
public class Print {
public abstract void printWeak();
public abstract void printStrong();
}

PrintBanner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class PrintBanner extends Print {
private Banner banner;
public PrintBanner(String string) {
super(string);
}

public void printWeak() {
showWithParen();
}

public void printStrong() {
showWithAster();
}

}
0%