适配器模式+单例模式

设计模式+ 结合单例模式,利用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请求'
    }
}

转载于:https://my.oschina.net/u/3269534/blog/3039583

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值