麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

Effective Java 服務(wù)提供者框架

2019-11-14 23:29:20
字體:
供稿:網(wǎng)友
Effective java 服務(wù)提供者框架

注:今天看《Effective Java 中文版 第2版》時(shí),發(fā)現(xiàn)在靜態(tài)工廠方法中提到的服務(wù)提供者框架的簡(jiǎn)單實(shí)現(xiàn)代碼不夠完整,所以自己寫了一份完整代碼附帶一些解釋,希望對(duì)大家有所幫助。

Service.java

// 服務(wù)接口public interface Service {    public abstract void serve();}

 

PRovider.java

// 提供者接口public interface Provider {    Service newService();}

 

ServiceManager.java

import java.util.Map;import java.util.concurrent.ConcurrentHashMap;public class ServiceManager {    private ServiceManager() {}        // 把服務(wù)接口的名字映射到Services中    private static final Map<String, Provider> providers =             new ConcurrentHashMap<String, Provider>();    public static final String DEFAULT_PROVIDER_NAME = "<def>";        // 提供者注冊(cè)API(默認(rèn))    public static void registerDefaultProvider(Provider p) {        registerProvider(DEFAULT_PROVIDER_NAME, p);    }
    // 提供者注冊(cè)API    public static void registerProvider(String name, Provider p) {        providers.put(name, p);    }        // 服務(wù)訪問API(默認(rèn))    public static Service newInstance() {        return newInstance(DEFAULT_PROVIDER_NAME);    }    // 服務(wù)訪問API 
    public static Service newInstance(String name) {                Provider p = providers.get(name);        if(p == null) {            throw new IllegalArgumentException("No provider registered with name: " + name);        }        return p.newService();    }}

 

EntityProvider.java

public class EntityProvider implements Provider {    static {        ServiceManager.registerProvider("EntityService", new EntityProvider());    }        @Override    public Service newService() {        return new ServiceImpl();    }        class ServiceImpl implements Service {        @Override        public void serve() {            System.out.println("開始服務(wù)...");        }    }}

 

Test.java

public class Test {    public static void main(String[] args) throws ClassNotFoundException {                Class.forName("EntityProvider");                 Service s = ServiceManager.newInstance("EntityService");        s.serve();   
    }}

 

另推薦幾個(gè)對(duì)服務(wù)提供者框架解釋地不錯(cuò)的博文:

[1]. CSDN. 服務(wù)提供者框架(Service Provider Framework)

[2]. ITEYE. JAVA 服務(wù)提供者框架介紹


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 蜜桃网站免费 | 国产乱淫av片免费网站 | 真人一级毛片免费 | 亚洲午夜在线视频 | 精精国产xxxx视频在线野外 | 中文字幕精品一区久久久久 | 日韩欧美视频一区二区三区 | 免费激情视频网站 | 久章草影院 | 久久国产精品久久久久久电车 | 91福利社在线 | 久在线观看福利视频69 | 刘亦菲一区二区三区免费看 | 国产一区日韩精品 | 最新中文字幕第一页视频 | 双性精h调教灌尿打屁股的文案 | 黄色网电影 | 黄色一级片在线免费观看 | 亚洲成人免费电影 | 久久精品国产久精国产 | 久久99国产精品视频 | 久久美女免费视频 | 曰批全过程40分钟免费视频多人 | 日韩高清影视 | 久草在线资源福利站 | 视频一区国产精品 | 中文在线观看视频 | 狠狠一区二区 | 91福利免费观看 | 成人做爰高潮片免费视频美国 | 国产亚洲精品久久久久久久久久 | av在线影片| 天堂福利电影 | 欧美一级淫片a免费播放口 91九色蝌蚪国产 | 精品一区二区三区在线观看视频 | 欧美精品久久久久久久多人混战 | 欧美精品成人一区二区三区四区 | 国内精品久久久久久久久久 | 国产九色在线播放九色 | 欧美日韩成人一区二区 | 国产日韩一区二区三区在线观看 |