オブジェクトの静的ファクトリの作成方法
2910 ワード
a、静的ファクトリは関連する名前を定義することができ、コンストラクタはクラスの名前bと重複しなければならない.呼び出すたびにオブジェクトを作成するのではなく、必要に応じてカスタマイズすることができ、インスタンスキャッシュを作成することができ、オブジェクトcの重複作成を回避し、戻り値をカスタマイズすることができる.サブタイプのオブジェクト(サービスプロバイダフレームワークの基礎)d、簡略化コード、サービスプロバイダフレームワーク設計思想(JDBC、JMS設計)は以下のように設計できる:シーン:会社がゲートカードをタッチして//対外サービスを提供するインタフェース(インタフェースA):DoorInterface-------->ゲートウェイ
package com.liangliang.coreJava.OPPTest;
/**
*
* @author sunliangliang
*
*/
public interface DoorInterface {
public boolean in();
public boolean out();
}
// :
public class DoorInterfaceImpl implements DoorInterface{
@Override
public boolean in() {
/** */
System.out.println("------------>inout
// ( A) :
/**
*
* @author sunliangliang
*
*/
public interface DoorProviderInterface {
public DoorInterface getInterface();
}
// :
public class DoorProviderInterfaceImpl implements DoorProviderInterface{
static{
DoorProviderManager.register("SOHU", new DoorProviderInterfaceImpl());
}
@Override
public DoorInterface getInterface() {
return new DoorInterfaceImpl();
}
}
//
public class DoorProviderManager {
private DoorProviderManager(){}
private static final Map providers=
new ConcurrentHashMap();
public static void register(String name,DoorProviderInterface doorProvider){
providers.put(name, doorProvider);
}
public static DoorInterface getInstance(String name){
DoorProviderInterface doorProvider=providers.get(name);
return doorProvider.getInterface();
}
}
public class ClientTest {
public static void main(String[] args) throws ClassNotFoundException {
Class.forName("com.liangliang.coreJava.OPPTest.DoorProviderInterfaceImpl");
DoorInterface door=DoorProviderManager.getInstance("SOHU");
door.in();
door.out();
}
}