设计模式+ 结合单例模式,利用Java 8接口方法默认实现特性
适配器模式+单例模式
默认适配者
/**
* 适配器模式(被适配对象,提供被适配的类或接口)
*
* @author Gu Yuanhua
* @date 2019/4/20
*/
// 适配者接口,可以有各种实现标准
public interface Adaptee {
default String request() {
return "可以完成客户请求";
}
}
/**
* 默认适配者
*/
class AdapteeDefault implements Adaptee {
// 单例模式结合Java 8新特性实现适配器和适配者默认实现,双方都可以实现多个适配器和适配者任意匹配
private static class Inner {
private static final AdapteeDefault INSTASNCE = new AdapteeDefault ();
}
private AdapteeDefault(){
if(Inner.INSTASNCE!=null){
throw new RuntimeException();
}
}
static Adaptee getInstance(){
return Inner.INSTASNCE;
}
默认适配器
/**
* 默认适配器
* @author Gu Yuanhua
* @date 2019/4/20
*/
public interface Adapter {
Adaptee adaptee = AdapteeDefault.getInstance ();
default String handleRequest() {
return adaptee.request ();
}
}
扩展一号适配者
/**
* 扩展一号适配者
* @author Gu Yuanhua
* @date 2019/4/20
*/
class AdapteeOne implements Adaptee{
@Override
public String request() {
return "可以完成客户One请求";
}
}
扩展一号适配器
/**
* 扩展一号适配器
* @author Gu Yuanhua
* @date 2019/4/20
*/
class AdapterOne implements Adapter{
@Override
public String handleRequest() {
return new AdapteeOne ().request ();
}
}
测试代码
/**
* @author Gu Yuanhua
* @date 2019/4/20
*/
@CompileStatic
class AdapterTest {
@Test
void testAdapter() {
/* 测试默认适配器和默认适配者 */
Adapter adapter = {} as Adapter
assert adapter.handleRequest() == '可以完成客户请求'
/* 测试扩展一号适配器和一号适配者 */
Adapter adapterOne = new AdapterOne()
assert adapterOne.handleRequest() == '可以完成客户One请求'
}
}