初探设计模式——适配器模式与外观模式

现实世界中有许多适配器的例子,比如说充电器接口和手机不匹配时,给数据线加个适配器(转换接口)就可以使用了。
OO适配器也是如此,将一个接口转换成另一个接口以符合客户的需求。

适配器模式:将一个类的接口转换成客户期望的一个接口。适配器让原本接口不兼容的类合作无间。

假设客户实现了接口A,如果想调用接口B就要修改客户的代码,通过适配器模式提供一个适配器类,
将改变封装在这个类中。
对象适配器

public class TurkeyAdapter implements A{	
	B b;
	public TurkeyAdapter(B b){		//传入实现B接口的类实例,对象组合
		this.b=b;
	}
	public void fly(){		//实现接口A的方法
		b.fly();
	}
}

A a=new TurkeyAdapter(b);
testA(a);
static void testA(A a){a.fly}

适配器:实现目标接口的类A,引入被适配者;这个适配器可被做成多向的(观察模式)。
客户通过目标接口调用适配器的方法,适配器调用引入的被适配者b。实现了解耦。

类的适配器:多重继承被适配者和目标类
对象适配器使用组合,可以适配该类的任何子类,将工作委托给被适配者让事情更有弹性。
类适配器使用继承,采用某个特定的被适配类。

外观模式:提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。
在一个类中组合进所需子系统组件,方法实现组件调用作为统一调度的接口。外观模式简化接口,将客户从组建的子系统中解耦(客户只知道这个类和统一调度的方法,改变组件并不影响客户),并且可以帮我们遵守“最少知识”原则。

最少知识原则:减少对象之间的交互,只留下几个“密友”
-尽量使用这样的方法:
-该对象本身、被当作方法的参数而传递进来的对象、此方法所创建或实例化的任何对象、对象的任何组件,
-保持这些对象的方法在界限内使用。
-如果某对象时调用其他方法的返回结果,不要调用这个对象的方法
println()方法就违反了这一原则,这个原则的使用会导致更多的“包装类”被制造出来,降低运行性能。

发布了28 篇原创文章 · 获赞 12 · 访问量 1247

猜你喜欢

转载自blog.csdn.net/weixin_43264478/article/details/104504164