Javaデザインパターン ファクトリパターン(3種類)

高洛峰
リリース: 2016-12-15 14:10:38
オリジナル
1426 人が閲覧しました

ファクトリ パターン

1. シンプル ファクトリ

について

シンプル ファクトリ パターンのファクトリ クラスは、通常、静的メソッドを使用して、受け取ったさまざまなパラメーターに基づいてさまざまなオブジェクト インスタンスを返します。
コードを変更しないと拡張できません。


Product インターフェイス

//Product インターフェイス
public interface ProductI {
public void productName();
}
Product エンティティ クラス

public class ProductAimplements ProductI {
@Override
public void productName() {
System .out.println("製品 A");
}
}
public class ProductB は ProductI {
@Override
public void productName() {
System.out.println("product B");ファクトリクラス

//単純なファクトリパターン
public class Factory {
public ProductI create(String productName) {
switch (productName) {
case "A": use using ‐ ‐ use using ‐ ‐ ‐ ‐‐‐‐‐ ‐‐‐'' と `
new ProductB() を返します Factory();
製品I 製品A = 工場.create("A");
製品A.製品名();
製品I 製品B = 工場.create( "B"); productB.productName();
}
}
出力

製品 A

製品 B

ファクトリ メソッド
理解

ファクトリ メソッドは、各製品にファクトリ クラスを提供します。異なる製品インスタンスは、異なるファクトリ インスタンスを通じて作成されます。
同じ階層構造内で、どの製品もサポートされます。


プロダクトインターフェイス、プロダクトエンティティクラス、シンプルファクトリは同じです。

ファクトリーインターフェース

publicインターフェース FactoryI {
//ファクトリーの目的は製品を生産することです
public ProductI create();
}
ファクトリーエンティティクラス

public class FactoryAimplements FactoryI {
@Override
public ProductI create () {
new ProductA();
public static void main(String[] args) {
ProductI productA = FactoryA.create();名前();
//
FactoryB = new FactoryB();
ProductI productB = FactoryB.productName();
}
出力

product B


理解

抽象的なファクトリーは、概念的な製品ファミリーへの応答です。たとえば、各自動車会社は乗用車、トラック、バスを同時に生産したいと考えているため、各工場には乗用車、トラック、バスを作成する方法が必要です。
製品ファミリーの概念に応えて誕生しました。新しい製品ラインを追加するのは簡単ですが、新しい製品を追加することは不可能です。
ファクトリーメソッドとの違いは、抽象ファクトリーには複数の製品を生産できる複数のメソッド、つまり製品クラスターがあることが多いことです。


抽象ファクトリ クラス

// ファクトリ パターンの描画
public interface AbstractFactory {
public ProductAI createProductA();
public ProductBI createProductB()
}
ファクトリ エンティティ クラス

;public class Factory1implemented AbstractFactory {
@Override
public ProductAI createProductA() {
return new ProductA1(); 
}

@Override
public ProductBI createProductB() {
return new ProductB1(); 
}
}
public class Factory2implements AbstractFactory {
@Override
public ProductAI createProductA() {
return new ProductA2(); 
}

@Override
public ProductBI createProductB() {
return new ProductB2(); 
}
}
品インターフェイス

//产品インターフェイス
パブリックインターフェイス ProductBI {
public void productName(); 
}
//产品インターフェイス
パブリック インターフェイス ProductAI {
public void productName(); 
}
产品实体类

public class ProductA1implements ProductAI {
@Override
public void productName() {
System.out.println("product A1"); 
}
}


さらに多くのJava设计モード之工厂モード(三种)相关文章请关注PHP中文网!

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!