1、工場出荷時のパターン
ファクトリモードでは、我々はあなたがオブジェクトを作成し、新しく作成されたオブジェクトを指すように共通のインターフェースを使用してたときに論理を作成するには、クライアントを公開しません。
人気話す、プラントモデルの性質は、プラントの運転方法の代わりに、インタフェースの同じ製品タイプの複雑なオブジェクトを作成して簡単に提供するための新しい方法でインスタンス化オブジェクトを作成しています。
例えば、携帯電話を作成するには:
(1)インターフェイスを定義します。
パブリック インターフェイス電話{ 文字列のブランド(); }
(2)実装クラス定義:
パブリック クラス iPhoneの実装電話{ @Override パブリック文字列のブランド(){ リターン「これは、アップルの携帯電話です」。 } } パブリック クラス Huaweiで実装電話{ @Override パブリック文字列ブランド(){ リターン「これはHuawei社の携帯電話です」。 } }
(3)定義されたファクトリクラス:
パブリック クラスfactory_model { 公衆電話createPhone(文字列phoneName){ 場合( "アップル" .equals(phoneName)){ 返す 新しい)のiPhoneを(; } そう であれば(以下"Huawei" .equals(phoneName)){ 戻り 新しい)(HUAWEIと、 } 他{ 戻り ヌル。 } } }
(4)工場のパターンを使用して:
パブリック クラスメイン{ 公共 静的 ボイドメイン(文字列[]引数){ factory_model工場 = 新しいfactory_model()。 電話Huawei社 = factory.createPhone(以下"Huawei" )。 電話でのリンゴ = factory.createPhone( "アップル" ); System.out.println(huawei.brand())。 System.out.println(apple.brand())。 } }
2、Abstract Factoryパターン
工場モデルのAbstract Factoryパターンは、インタフェースは、スーパー植物と呼ばれることができ、異なる植物を作成するための抽象インタフェースを追加します。
使用時には、まず、抽象ファクトリオブジェクトによって異なるインタフェースを作成し、ファクトリオブジェクトに応じて異なるオブジェクトを作成します。
例えば異なるブランドの工場、携帯電話やパソコン、:
(1)の定義インタフェースの携帯電話の製品を:
パブリック インターフェイス電話{ 文字列の呼び出し(); }
(2)携帯電話の製品には、クラス定義を達成します:
public class PhoneApple implements Phone { @Override public String call() { return " call somebody by apple phone"; } } public class PhoneHuaWei implements Phone { @Override public String call() { return " call somebody by huawei phone"; } }
(3)电脑类产品的接口定义:
public interface Computer { String internet(); }
(4)电脑类产品的实现类定义:
public class ComputerApple implements Computer { @Override public String internet() { return "surf the internet by apple computer"; } } public class ComputerHuaWei implements Computer { @Override public String internet() { return "surf the internet by huawei computer"; } }
(5)抽象工厂定义:
public abstract class AbstractFactory { public abstract Phone createPhone(String brand); public abstract Computer createComputer(String brand); }
(6)手机工厂类的定义:
public class PhoneFactory extends AbstractFactory { @Override public Phone createPhone(String brand) { if("Apple".equals(brand)){ return new PhoneApple(); }else if("HuaWei".equals(brand)){ return new PhoneHuaWei(); }else { return null; } } @Override public Computer createComputer(String brand) { return null; } }
(7)电脑工厂类的定义:
public class ComputerFactory extends AbstractFactory { @Override public Phone createPhone(String brand) { return null; } @Override public Computer createComputer(String brand) { if("Apple".equals(brand)){ return new ComputerApple(); }else if("HuaWei".equals(brand)){ return new ComputerHuaWei(); }else { return null; } } }
(8)使用抽象工厂:
public class Main { public static void main(String[] args) { AbstractFactory phoneFactory = new PhoneFactory(); Phone phoneApple = phoneFactory.createPhone("Apple"); Phone phoneHuaWei = phoneFactory.createPhone("HuaWei"); System.out.println(phoneApple.call()); System.out.println(phoneHuaWei.call()); AbstractFactory computerFactory = new ComputerFactory(); Computer computerApple = computerFactory.createComputer("Apple"); Computer computerHuaWei = computerFactory.createComputer("HuaWei"); System.out.println(computerApple.internet()); System.out.println(computerHuaWei.internet()); } }