コンストラクターの代わりに静的なファクトリーメソッド
これについては、多くのことが言えます。1年以上プロジェクトに取り組んだ後、だんだんと感じました。
コンストラクターと言えば、
誰もが知っているように、コンストラクターを使用すると、自分や他のインスタンスをいつでもどこでも取得できます。私たちは新しいものを使うことに不誠実ですが、他の人がどのように感じるかを考えたことはありません。実際、新しい、新しいオブジェクトとは、このオブジェクトのメモリ空間を開くことです。それがどこでも、どこでも、山の至る所で新しい場合...
カラフルな新しい、本質は同じです。1
つの文:コンストラクターは万能ですが、それを大切にする必要があります。
静的ファクトリー・メソッドについてお話ししましょう。
静的ファクトリー・メソッドは、名前が示すように、クラスのインスタンスを返す単なる静的メソッドです。ここには不適切な類推がありますが、静的なファクトリーメソッド(ハンドタップなど)には常に水(オブジェクト)があると思います。この方法を使用してください。
次の簡単な例を見てください:
public static Boolean valueOfBoolean(Boolean b)
{
return b?Boolean.TRUE:Boolean.FALSE;
}
#boolean基本タイプはBooleanオブジェクト参照に変換されます。
#static
上記の例に従って、コンストラクターと比較して、私と話し合いましょう:
1名前を持つようになります
2毎回それらを呼び出す必要はなく、新しいオブジェクトを作成します
3元の戻り型オブジェクト
サービスアクセスAPIのサブタイプを返します---柔軟な動的ファクトリー
以下は、サービスプロバイダーインターフェイスとデフォルトプロバイダーを実装しています。
パッケージsrc.day01;
import java.util.concurrent.ConcurrentHashMap;
/ **
* IntelliJ IDEAで作成。
*ユーザー:Li
*日付:14-5-12
*時間:下午10:52
*このテンプレートを変更するには、File | Fileを使用します。設定| ファイルテンプレート。
* /
public interface Service {
}
public interface Provider {
Service newService();
}
public class Services {
private Services(){}
private static final Map <String、Provider> providers = new ConcurrentHashMap <String、Provider>();
public static final String DEFAULT_PROVIDER_NAME = "<def>";
public static void registerDeafaultProvider(Provider p)
{
registerProvider(DEFAULT_PROVIDER_NAME、p);
}
public static void registerProvider(String name、Provider p)
{
providers.put(name、p);
}
public static Service new Instance()
{
return newInstance(DEFAULT_PROVIDER_NAME);
}
public static Service newInstance( String name)
{
Provider p = providers.get(name);
if(p == null)
throw new IllegalArgumentException(
"no ..."
);
return p.newService();
}
} #
providers
#newInstanceこのメソッドは静的です
この例のファクトリーメソッドは
、パラメーター化された型のインスタンスを作成すると、コードがより簡潔になることを示しています。 スタティックファクトリーメソッド 1の
概要
2新しいオブジェクトを作成するために毎回それらを呼び出す必要はありません
。3元の戻り型の任意のサブタイプのオブジェクトを返します
。4それらがパラメーター化された型インスタンスを作成する場合、コードはより簡潔になります。
(人生は、物を見つけること、方法を探すこと、あなたの言うことと切り離せないものです。)
おかげで、リソースの共有は
、一歩一歩進んでいきました。みんなに参加してもらいたいです。
Javaを改善し、コンストラクターの代わりに静的ファクトリーメソッドを検討する
おすすめ
転載: www.cnblogs.com/zhenhua1618/p/12729931.html
ランキング