ビルダー パターンの定義: 複雑なオブジェクトの構築をその表現から分離し、同じ構築プロセスで異なる表現を作成できるようにする設計を指します。パターンはと呼ばれます。ビルダーパターン。複雑なオブジェクトを複数の単純なオブジェクトに分割し、それを段階的に構築します。これは、変更と不変性を区別します。つまり、製品のコンポーネントは変更されませんが、各部分は柔軟に選択できます。
1. 優れたカプセル化、構造とプレゼンテーションの分離。
2. スケーラビリティが高く、特定のビルダーがそれぞれ独立しているため、システムの分離に役立ちます。
3. クライアントは製品の内部構成を詳細に知る必要がなく、他のモジュールに影響を与えることなく作成プロセスを段階的に改良していくことができるため、細かなリスクの管理が容易になります。
1. 製品のコンポーネントは同じである必要があるため、使用範囲が制限されます。
2. 製品の内部変更が複雑な場合、製作者も同時に修正を行う必要があり、将来のメンテナンスコストが高くなります。
ビルダー モデルとファクトリ モデルには焦点が異なります。ビルダー モデルはコンポーネントの組み立てプロセスに重点を置き、ファクトリ メソッド モデルはコンポーネントの作成プロセスに重点を置きます。しかし、両方を一緒に使用することもできます。
ケース: ミラクル ドクター Doudou Alchemy
製品の役割 (製品): ピル
抽象ビルダー (ビルダー): 抽象ダンファン
コンクリート ビルダー: コンクリート ダンファン
監督: ミラクル ドクター ドゥドゥ
ミラクル ドクター ドゥドゥは 9 ターンのエリクサーとタイ ヴォイド ディバイン ピルを精製します
注: 保存するには恐れ入りますが、ここで紹介する錠剤レシピは錠剤の名前と効果のみを記載しており、材料等は記載しておりません。
エリクサー クラスは、エリクサーの名前と効果を宣言します。
public class Dan { /* cailiao 丹药的名称 danhuo 丹药的效果*/ private String name; private String xiaoguo; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getXiaoguo() { return xiaoguo; } public void setXiaoguo(String xiaoguo) { this.xiaoguo = xiaoguo; } }
抽象クラス、新しいエリクサー オブジェクトは、次の 2 つを宣言します。抽象的な方法としては、エリクサーに名前を付けてその効果を付与する方法と、エリクサーを生成する方法があります。
//抽象丹方 abstract class DanFang { Dan dan = new Dan(); public abstract void name(); public abstract void xiaoguo(); public Dan getDan() { return dan; } }
特定の処方箋クラスは、処方箋クラスを継承し、2 つの抽象メソッドを実装します。
//九转仙丹丹方 public class JiuZhuan extends DanFang { @Override public void name() { dan.setName("九转仙丹"); } @Override public void xiaoguo() { dan.setXiaoguo("原地成仙"); } }
特定の Danfang クラスは Danfang クラスを継承し、2 つの抽象メソッドを実装します。
//太虚化神丹丹方 public class Taixu extends DanFang { @Override public void name() { dan.setName("太虚化神丹"); } @Override public void xiaoguo() { dan.setXiaoguo("意念化神"); } }
エリクサーの属性、パラメータを持つコンストラクターメソッド、錬金術メソッドを宣言します。
public class DouDou { private final DanFang danLu; public DouDou(DanFang danLu) { this.danLu = danLu; } //炼丹方法 public Dan lian() { //放入材料 danLu.name(); //释放丹火 danLu.xiaoguo(); //成丹 return danLu.getDan(); } }
2つの錠剤を精製しています。
rreeee以上がJava のビルダー パターンのケースを分析するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。