一、适配器模式
适配器模式:将一个类的接口转换成客户需要的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
比如,开发小组1编写的系统中有一个接口A,该接口中有一个名字是methodA()的方法,并且系统中已有一些类,比如Computer类,实现了A接口,那么A接口变量可一回调Computer类的实例的methodA()方法。开发小组2编写的系统中有一个B接口,该接口中有一个名字是methodB()的方法,并且系统中已有一些类,比如Think类,实现了B接口。
那如果想要A接口变量能回调B接口定义的方法,那该怎么做呢?这时就可以使用适配器模式。
我们定义一个类AdapterA,实现A接口并包含B接口变量,这样一来,A接口变量在回调AdapterA适配器实现A接口的方法的过程中,通过委托B接口变量回调B接口中的方法,就能使用B接口定义的方法了。
二、责任链模式
责任链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接口者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。
比如说要鉴定一个瓷器,有四个鉴定专家,每个专家分别鉴定“唐瓷”、“宋瓷”、“明瓷”、“清瓷”,请设想一下我们该怎么做呢?在程序中写一堆的if else吗?这也太low了吧!这时我们就可以使用责任链模式。
我们让唐、宋、明、清这四个类都实现同一个接口-Handler鉴定接口,这个接口中定义了两个方法,一个是handleRequest()方法,用于处理请求,另一个是setNextHandler(Handler handler)方法,用于设置下一个处理者。在handleRequest()方法的具体实现中,如果能够处理请求,则返回处理结果,如果不能处理请求,则将请求交给下一个处理者,而具体处理者是哪个,我们可以在类外,根据具体情况通过setNextHandler(Handler handler)方法设置。这样我们只用把请求交给第一个处理者就可以直接接受结果了。