您的位置:首页 > 其它

设计模式之适配器模式与外观模式

2017-03-15 10:41 246 查看

适配器模式

适配器模式就是将一个接口转化成另一个接口。

一个常见的例子是插头转换器

我们知道英式插头长这样:

package com.wenr.chapter7;

public class FacadeTest {
public static void main(String[] args) {
A a = new A();
B b = new B();
C c = new C();
Facade facade = new Facade(a, b, c);
facade.ABC1();
System.out.println();
facade.ABC2();
}
}

class A {
public void a1() {
System.out.println("a1");
}
public void a2() {
System.out.println("a2");
}
}

class B {
public void b1() {
System.out.println("b1");
}
public void b2() {
System.out.println("b2");
}
}

class C {
public void c1() {
System.out.println("c1");
}
public void c2() {
System.out.println("c2");
}
}

class Facade {
A a;
B b;
C c;
public Facade(A a, B b, C c) {
this.a = a;
this.b = b;
this.c = c;
}
public void ABC1() {
a.a1();
b.b1();
c.c1();
}
public void ABC2() {
a.a2();
b.b2();
c.c2();
}
}


View Code

外观模式:提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。

类图:




设计原则:最少知识原则(又称作墨忒耳法则,Law of Demeter)

只和你的密友交谈。


这个原则希望我们在设计中,不要让太多的类耦合在一起,免得修改系统中的一部分,会影响到其他部分。

怎么才能避免这样?这个原则提供了一些方针:就任何对象而言,在该对象的方法内,我们只应调用属于以下范围的方法:

该对象本身

被当做方法的参数而传递进来的对象

此方法所创建或实例化的任何对象

对象的任何组件

举个栗子:

不使用这个原则:

public float getTemp() {
Thermometer thermometer = station.getThermometer();
return thermometer.getTemperature();
}


使用这个原则:

public float getTemp() {
return station.getTemperature();
}


应用此原则时,在气象站中加一个方法,用来向温度计请求温度。这可以减少我们所依赖的类的数目。

综上:

当需要使用一个现有的类而其接口并不符合你的需求时,就使用适配器。

当需要简化并统一一个很大的接口或者一群复杂的接口时,使用外观。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: