国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

Effective Java 服務提供者框架

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

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

Service.java

// 服務接口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() {}        // 把服務接口的名字映射到Services中    private static final Map<String, Provider> providers =             new ConcurrentHashMap<String, Provider>();    public static final String DEFAULT_PROVIDER_NAME = "<def>";        // 提供者注冊API(默認)    public static void registerDefaultProvider(Provider p) {        registerProvider(DEFAULT_PROVIDER_NAME, p);    }
    // 提供者注冊API    public static void registerProvider(String name, Provider p) {        providers.put(name, p);    }        // 服務訪問API(默認)    public static Service newInstance() {        return newInstance(DEFAULT_PROVIDER_NAME);    }    // 服務訪問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("開始服務...");        }    }}

 

Test.java

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

 

另推薦幾個對服務提供者框架解釋地不錯的博文:

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

[2]. ITEYE. JAVA 服務提供者框架介紹


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 永昌县| 灯塔市| 长顺县| 成武县| 奎屯市| 丰顺县| 华池县| 郯城县| 龙陵县| 长武县| 湘潭县| 武鸣县| 衡东县| 孝义市| 略阳县| 潢川县| 双辽市| 蓬安县| 福鼎市| 万安县| 左权县| 北流市| 罗江县| 于田县| 藁城市| 南汇区| 宜春市| 新绛县| 陇南市| 成都市| 安化县| 吉木乃县| 太湖县| 彭山县| 磴口县| 临洮县| 宝鸡市| 太原市| 大安市| 灌云县| 建昌县|