ファクトリパターン
役割:
クリエイターの分離と、発信者の達成するために
:詳細カテゴリ
単純なファクトリパターン
ファクトリメソッドパターン
Abstract Factoryパターンを
1.1単純なファクトリパターン(静的ファクトリーモード)
図1は、第1抽象クラスの車を作成します
public interface Car {
void name();
}
2自動車製造
製造業「呉陵」の車
public class WuLing implements Car {
@Override
public void name() {
System.out.println("五凌宏观");
}
}
「テスラ」の車を作成
public class Tesla implements Car {
@Override
public void name() {
System.out.println("特斯拉");
}
}
今、私たちは新しいの出ている、私たちの同等は、から作られました。
私は「五陵」車が欲しい、私は車を来るか、パイプ「呉陵」クルマを作成する必要はありません。私たちは、実際にあなたが購入し、工場に行くことができ、それにお金を使う
私たちは工場を作成するので、あなたは車が直接の友人を呼び出して取得することができます。どのようにパイプを作成するために車を必要としません。
4自動車工場を作成します(工場出荷時に作られた画像の上に二つの方法で)
/**
* 简单工厂模式,又成为静态工厂模式
* 弊端:增加一个新产品时,如果你不修改代码,做不到
*/
/**
* 汽车工厂
*/
public class CarFactory {
public static Car getCar(String car) {
if("五凌".equals(car)) return new WuLing();
if("特斯拉".equals(car)) return new Tesla();
return null;
}
/**
* 第二种方式
* @return
*/
public static Car getWuLing() {
return new WuLing();
}
public static Car getTesla() {
return new Tesla();
}
}
今、私たちは必要なときにピックアップする工場に直接移動し、新しい友達を必要としません。私は細部の内部は何もありません最後に気にしないでください。
消費者はちょうど私たちが必要なもの、自動車工場を伝え、2台の車を購入したいです。
もはや必要ない新しい武陵ん100個のパラメータがある場合、我々はどのように達成するか、パラメータが何であるかを気にする必要はありません。これらの新たな詳細は、あなたが今だけ呼び出すことができたときに前に、私たちは心配する必要があります。
短所:
あなたが「人気」の車を追加したい場合は、工場出荷時には、コードを変更する必要があります。これは、開閉の原則に違反します
/**
* 弊端:增加实现类时需要改工厂类的代码
*/
public class Dazhong implements Car {
@Override
public void name() {
System.out.println("大众");
}
}
1.2ファクトリメソッド
抽象クラスの車を確立するために、1
public interface Car {
void name();
}
2自動車製造
製造業「呉陵」の車
public class WuLing implements Car {
@Override
public void name() {
System.out.println("五凌宏观");
}
}
「テスラ」の車を作成
public class Tesla implements Car {
@Override
public void name() {
System.out.println("特斯拉");
}
}
3抽象クラスの自動車工場を作成します。
public interface CarFactory {
Car getCar();
}
4自動車工場を作成します。
製造「呉陵」の車の自動車工場を作成します
public class WuLingFactory implements CarFactory {
@Override
public Car getCar() {
return new WuLing();
}
}
「テスラ」車の自動車工場を作成します
package com.xgp.company.第二种_工厂模式.工厂方法模式;
public class TeslaFactory implements CarFactory {
@Override
public Car getCar() {
return new Tesla();
}
}
それぞれの車には、独自の工場の友人を持って、明らかにコードがはるかに魅力的になっご覧ください。
そして、簡単な植物の違い:
シンプル工場のみファクトリクラス、
そして今、複数のファクトリクラスを作成するためのファクトリメソッドパターンの必要性、インタフェースを実装する複数のファクトリクラス。実装クラスの横方向の拡張
新しい「フォルクスワーゲン」の車の自動車工場
public class DazhongFactory implements CarFactory {
@Override
public Car getCar() {
return new Dazhong();
}
}