适配器模式+单例模式

设计模式+ 结合单例模式,利用Java 8接口方法默认实现特性

适配器模式+单例模式

默认适配者java

/**
 * 适配器模式(被适配对象,提供被适配的类或接口)
 *
 * @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 ();
	}
}

扩展一号适配者ide

/**
 * 扩展一号适配者
 * @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请求'
    }
}
相关文章
相关标签/搜索