日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

静态工厂方法之服务提供者框架

發(fā)布時(shí)間:2024/1/17 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 静态工厂方法之服务提供者框架 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

  靜態(tài)工廠返回的對(duì)象所屬的類(lèi),在編寫(xiě)包含該靜態(tài)工廠方法的類(lèi)的時(shí)候,可以不必存在.這種靈活的靜態(tài)工廠方法構(gòu)成了服務(wù)提供者框架的基礎(chǔ),例如JDBC的API.服務(wù)提供者框架是指這樣一個(gè)系統(tǒng):多個(gè)服務(wù)提供者實(shí)現(xiàn)一個(gè)服務(wù),系統(tǒng)為服務(wù)提供者的客戶(hù)端提供多個(gè)實(shí)現(xiàn).并把它們從多個(gè)實(shí)現(xiàn)中解耦出來(lái).

  服務(wù)提供者框架包含四大組件-服務(wù)接口(提供者實(shí)現(xiàn)),提供者注冊(cè)API(由系統(tǒng)用來(lái)注冊(cè)實(shí)現(xiàn)),服務(wù)訪問(wèn)API(客戶(hù)端用來(lái)訪問(wèn)服務(wù)的實(shí)例),服務(wù)提供者接口(服務(wù)者負(fù)責(zé)創(chuàng)建其服務(wù)實(shí)現(xiàn)的實(shí)例).下面的例子就是服務(wù)提供者框架的具體實(shí)現(xiàn):

  首先是服務(wù)接口和服務(wù)提供者接口,服務(wù)提供者用來(lái)產(chǎn)生服務(wù):

/*** * @author 胡龍海* 創(chuàng)建時(shí)間: 2017年4月4日* 服務(wù)接口*/ public interface Service {//Service方法.public void doService(); } /*** * @author 胡龍海* 創(chuàng)建時(shí)間: 2017年4月4日* 服務(wù)提供者接口*/ public interface Provider {public Service newService(); }

  緊接著是服務(wù)提供者接口的實(shí)現(xiàn)和服務(wù)接口的實(shí)現(xiàn):

public class StrongProvider implements Provider{@Overridepublic Service newService() {return new StrongService();}} public class WeekProvider implements Provider{@Overridepublic Service newService() {return new WeekService();}} public class WeekService implements Service{@Overridepublic void doService() {System.out.println("弱爆了");}} public class StrongService implements Service{@Overridepublic void doService() {System.out.println("雙擊666");}}

  緊接著就是提供靜態(tài)工廠了,我們通過(guò)靜態(tài)工廠完成服務(wù)訪問(wèn)API,服務(wù)提供者注冊(cè)API的編寫(xiě):

/*** 靜態(tài)工廠,提供服務(wù)* @author 胡龍海* 創(chuàng)建時(shí)間: 2017年4月4日*/ public class Services {private Services(){} //保證該類(lèi)是不可實(shí)例化的private static Map<String,Provider> providers=new HashMap<>();//一系列服務(wù)提供者private static String DEFAULT_PROVIDER_NAME="<def>";/*** 提供者注冊(cè)API.(默認(rèn))* @author 胡龍海* 創(chuàng)建時(shí)間: 2017年4月4日* @param provider*/public static void registDefaultProvider(Provider provider) {providers.put(DEFAULT_PROVIDER_NAME, provider);}/*** 提供者注冊(cè)API* @author 胡龍海* 創(chuàng)建時(shí)間: 2017年4月4日* @param providerName* @param provider*/public static void registProvider(String providerName,Provider provider) {providers.put(providerName, provider);}/*** 服務(wù)訪問(wèn)API,默認(rèn)* @author 胡龍海* 創(chuàng)建時(shí)間: 2017年4月4日* @return*/public static Service newService() {return providers.get(DEFAULT_PROVIDER_NAME).newService();}/*** 服務(wù)訪問(wèn)API.* @author 胡龍海* 創(chuàng)建時(shí)間: 2017年4月4日* @param serviceName* @return*/public static Service newService(String serviceName) {return providers.get(serviceName).newService();} }

  接著,我們就可以建立代碼去測(cè)試了.可以去注冊(cè)幾個(gè)服務(wù)提供者,然后根據(jù)注冊(cè)時(shí)的名字完成對(duì)于服務(wù)的調(diào)用.

public class TestService {@Testpublic void testService() {Services.registProvider("week",new WeekProvider());Services.registProvider("strong", new StrongProvider());Services.registDefaultProvider(new StrongProvider());Services.newService().doService();Services.newService("week").doService();} }

  實(shí)際上,我們熟悉的JDBC編程就是基于這種服務(wù)提供者框架去實(shí)現(xiàn)的,其中Driver是服務(wù)提供者接口,Connection是服務(wù)接口,DriverManager.registDriver()是服務(wù)提供者注冊(cè)API,而DriverManager.getConnection()是服務(wù)訪問(wèn)API.

轉(zhuǎn)載于:https://www.cnblogs.com/hlhdidi/p/6666254.html

總結(jié)

以上是生活随笔為你收集整理的静态工厂方法之服务提供者框架的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。