アセンブラ (デザインパターン) – 定義

導入

ビルダーは、ソース オブジェクトからさまざまな複雑なオブジェクトを作成するために使用されるデザイン パターンです。ソース オブジェクトは、 Assembler抽象クラスの共通インターフェイスへの一連の呼び出しを通じて、完全な各オブジェクトの作成に個別に寄与するさまざまな部分で構成されます。

ソース オブジェクトの例は、エンコードする必要があるメッセージ内の文字または画像のリストです。ディレクター オブジェクトは、ソース オブジェクトに関する情報をAssemblerクラスに提供するために必要です。抽象マウンタークラスは、たとえばhandleCharacter()handleImage()など、Director クラスが使用するインターフェイスの呼び出しリストにすることができます。 Assemblerクラスの各具象バージョンは、これらの呼び出し用のメソッドを実装することも、呼び出された場合には単純に情報を無視することもできます。具体的なビルダーの例は、テキストを暗号化しますが、画像を無視するenigmaBuilderです。

前の例では、ソフトウェアは特定のBuilderクラスenigmaBuilderを作成します。このオブジェクトは、ソース オブジェクトのメイン メッセージの各データ ポイントを反復処理する単純なディレクター オブジェクトに渡されます。エディター クラスは、最終プロジェクトを段階的に作成します。最後に、メイン コードはマウンターから最終オブジェクトを要求し、それとディレクター オブジェクトを破棄します。その後、 enigmaBuilder暗号化技術を別の暗号化技術に置き換える必要があると判断された場合は、ディレクター クラスとメイン コードを少し変更するだけで、新しい Builder クラスに置き換えることができます。実際、唯一の変更は、現在のErectorクラスがパラメータとしてディレクターに渡されることです。

目的:複雑なオブジェクトの構築を表現から分離し、同じ構築プロセスで異なる表現を作成できるようにします。

アセンブラ (デザインパターン) - 定義

クラス図

  • エディタ
    • 製品を含む抽象クラス
  • 組立業者コンクリート
    • マウンタの実装を提供します
    • 製品のさまざまな部品を組み立て、組み立てます
  • 監督
    • Erector 設計法を使用してオブジェクトを構築します
  • 製品
    • 建設中の複雑なオブジェクト

ジャワ

/* 製品 */ class Pizza { private String生地= "" ;プライベート文字列ソース= "" ;プライベート文字列トリム= "" ; public void setPate ( String pate ) { this .パテ=ペースト; public void setSauce ( Stringソース) { this .ソース=ソース; public void setTrim ( String Trim ) { this .付け合わせ=付け合わせ; } } /* 野菜 */抽象クラスVegetablePizza {保護されたピザ ピザ; public Pizza getPizza ( ) {ピザを返す; } public void createNewPizza ( ) {ピザ=新しいピザ( ) ; public abstract void mountPate ( ) ; public abstract void mountSauce ( ) ; public abstract void mountTrim ( ) ; } /* ConcreteMonter */ class HawaiianPizzaMonter extends PizzaMonter { public void montagePate ( ) {ピザ。 setPate ( 交差 ) ; } public void mountSauce ( ) {ピザ。 setSauce ( "マイルド" ) ; } public void mountTopping ( ) {ピザ。 setTopper ( "ハム+パイナップル" ) ; } } /* VegetableConcrete */ class VegetablePizzaPiquante extends VegetablePizza { public voidPate ( ) {ピザ。 setPate ( 「パフ」 ) ; } public void mountSauce ( ) {ピザ。 setSauce ( 「ホット」 ) ; } public void mountTopping ( ) {ピザ。 setTopper ( "ペパロニ+サラミ" ) ; } } /* Director */ class Server { private PizzaMonitorPizzaMonitor ; public void setPizzaMonitor ( PizzaMonitor mp ) { PizzaMonitor = mp ; } public Pizza getPizza ( ) {ピザマウントを返しますgetピザ( ) ; } public void buildPizza ( ) { buildPizza. createNewPizza ( ) ;編集者ピザ。 mountPate ( ) ;編集者ピザ。マウントソース( ) ;編集者ピザ。マウントトリム( ) ; } } /* ピザを注文した顧客。 */ class ExampleMonitor { public static void main ( String [ ] args ) { Server サーバー= new Server ( ) ; PizzaMonitorHawaiiPizzaMonitor = new HawaiianPizzaMonitor ( ) ; PizzaMonitor SpicyPizzaMonitor = new SpicyPizzaMonitor ( ) ;サーバ。 setPizzaMonitor ( HawaiiPizzaMonitor ) ;サーバ。 buildPizza ( ) ;ピザピザウェイター。 getピザ( ) ; } }
アセンブラ (デザインパターン) - 定義

PHP

 /* 製品 */ class Pizza { private $_pate = "" ;プライベート$_sauce = "" ;プライベート$_topping = "" ; public function setPate ( $pate ) { $this -> _pate = $pate ; }パブリック関数setSauce ( $sauce ) { $this -> _sauce = $sauce ; } public function setTrim ( $topping ) { $this -> _topping = $topping ; } } /* 野菜 */抽象クラスVegetablePizza { protected $_pizza ; public function getPizza ( ) { return $this -> _pizza ; } public function createNewPizza ( ) { $this -> _pizza = new Pizza ( ) ;抽象パブリック関数mountPate ( ) ;抽象パブリック関数mountSauce ( ) ;抽象パブリック関数mountTrim ( ) ; } /* VegetableConcrete */ class VegetablePizzaHawaii extends VegetablePizza { public function montagePate ( ) { $this -> _pizza -> setPate ( "crossed" ) ; } public function setSauce ( ) { $this -> _pizza -> setSauce ( "mild" ) ; } public function setTopper ( ) { $this -> _pizza -> setTopper ( "ham+pineapple" ) ; } } /* VegetableConcrete */ class VegetablePizzaPiquante extends VegetablePizza { public function montagePate ( ) { $this -> _pizza -> setPâte ( 'puff' ) ; } public function setSauce ( ) { $this -> _pizza -> setSauce ( "hot" ) ; } public function setTopper ( ) { $this -> _pizza -> setTopper ( "ペパロニ+サラミ" ) ; } } /* ディレクター */クラスサーバー{ private $_pizzamonteur ; public function setPizzaMonitor ( PizzaMontor $mp ) { $this -> _PizzaMontor = $mp ; } public function getPizza ( ) { return $this -> _MonteurPizza -> getPizza ( ) ; }パブリック関数buildPizza ( ) { $this -> _buildPizza -> createNewPizza ( ) ; $this -> _mountPizza -> mountPate ( ) ; $this -> _mountPizza -> mountSauce ( ) ; $this -> _mountPizza -> mountTopping ( ) ; } } /* ピザを注文した顧客。 */ $server =新しいサーバー( ) ; $HawaiiPizzaMonitor = new HawaiianPizzaMonitor ( ) ; $PizzaPiquanteMonitor =新しいPizzaPiquanteMonitor ( ) ; $server -> setPizzaMonitor ( $PizzaMonitorHawaii ) ; $server -> buildPizza ( ) ; $pizza = $server -> getPizza ( ) ;
アセンブラ (デザインパターン) - 定義
  1. نمط تصميم الباني – arabe
  2. Строител (шаблон) – bulgare
  3. Builder – catalan
  4. Builder – tchèque
  5. Erbauer (Entwurfsmuster) – allemand
  6. Builder pattern – anglais

アセンブラ (デザインパターン) – 定義・関連動画

サイエンス・ハブ

知識の扉を開け、世界を変える。