工場出荷時のパターンとは何ですか?役割とは何ですか?
オブジェクトを作成するための最良の方法を提供し、スキーマを作成するために、工場出荷時のモデルに属しています。あなたがオブジェクトを作成すると、論理クライアントの露出を作成し、新しく作成されたオブジェクトを指すように共通のインターフェースを使用していません。彼らは複雑なオブジェクトを生成するために必要とされるどこに、あなたは、Factory Methodパターンを使用することができます。春のような。
役割:
Factoryパターンを使用し、別のオブジェクトやプロセスを作成します。クラスAは、B、Bへの呼び出しを除き、Aが工場出荷時のクラスにそれのためとしてインスタンス化され、クラスBを呼び出すために望んでいます。そしてClassBのにClassAの結合度を低減することができます。これは、デカップリングで役割を果たしました。
ファクトリモードでは、コードの重複を減らすことができます。あなたは非常に複雑であり、プロセスのオブジェクトを作成し、多くの場所を使用する場合は、重複したコードの多くを生成します。だから、工場の一元管理を作成するために、これらのオブジェクトを処理することができます。だけでなく、コードの重複を減らす、それは管理と保守の対象となります。
(A)、単純な工場パターン
図1に示すように、インタフェースiクラスを定義します
パブリック インターフェイス ICLASS {
公共 ボイドが 作成します();
}
インタフェースICLASSとレプリケーションのメソッドを実装2.Class1
パブリック クラス Class1が実装 ICLASSを{
@オーバーライド
公共 のボイド (作成){
。システムOUT .println( "calss1オブジェクトが正常に作成します!");
}
}
3、クラス2及び複製インターフェイス実装方法ICLASS
パブリック クラス Class2には実装 ICLASSを{
@オーバーライド
公共 のボイド (作成){
。システムOUT .println( "calss2オブジェクトが正常に作成します!");
}
}
4、ファクトリクラス
パブリック クラス ファクトリー{
//これは、クラス1とクラス2インターフェイスへの単純なファクトリパターン、ICLASSです
公共 のiCLASS 農産物(文字列型){
もし( "クラス1" .equals(タイプ)){
返す 新しい Class1のを();
} そう であれば( "クラス2" .equals(タイプ)){
返す 新しい クラス2を();
} 他 {
。システムOUTの .println( "正しいタイプを入力してください!");
リターン ヌル。
}
}
//複数の方法
/ *パブリックiクラスのClass1(){
新しいClass1のを返します();
}
公共iクラスクラス2(){
新しいクラス2を返します();
} * /
}
5、テストクラス
パブリック静的無効メイン(文字列[] args){
工場出荷時=新しい工場()。
iクラスiクラス= factory.produce(「クラス1」)。
iclass.create();
}
工場モードの第二に、方法
シンプルな工場に問題があり、依存ファクトリクラスのクラスを作成し、そのプログラムを拡大することで、
工場出荷時に問題がある場合は、クラスファクトリを変更する必要があり、他のクラスを作成しても影響を受けることになります。これは、閉鎖の原則に反しています。
上記1,1,2,3-手順。
図4に示すように、ファクトリインタフェースIFactoryです。
パブリック インターフェイス IFactoryです{
公共 のiCLASSプロデュース();
}
5、Class1Factory IFactoryですし、オブジェクトを作成するための複製方法を実装します。
パブリッククラスClass1Factoryは{IFactoryですが実装します
@Override
公共のiCLASS農産物(){
)(新しいクラス1を返します。
}
}
図6に示すように、上記Class2Factory。
7、テストクラス
パブリッククラスFactoryTest {
パブリック静的無効メイン(文字列[] args){
IFactoryですプロ=新しいClass1Factory()。
ICLASS送信者= pro.produce()。
sender.create();
}
}
第三に、Abstract Factoryパターン