適配器模式+單例模式

設計模式+ 結合單例模式,利用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請求'
    }
}
相關文章
相關標籤/搜索