ビルダー(ビルダー)モード

プライマー

ソフトウェアシステムでは、時々、通常、特定のアルゴリズムでサブオブジェクトのさまざまな部分で構成された、作品を作成するための「複雑なオブジェクトを」直面し、需要の変化に起因し、この複雑なオブジェクトのさまざまな部分は、多くの場合、劇的な変化に直面しているが、アルゴリズムは比較的安定して一緒に結合されます。

コンセプト

Builderパターンは、アルゴリズムを使用して簡単なオブジェクトレベルを使用してヘルプの構造の複雑なオブジェクトへのユニークなデザインパターンです。

クラス図

分析の例

そのような組成物の等スクリーンボード、プロセッサ、であるが、これらの成分のそれぞれは、可変電話である携帯電話、など。

これらの成分は使用される移動電話の異なるモデルで同じではない。、プロセッサテック、クアルコムとしてのNvidiaなど。

同様にボードや携帯電話の画面がうまく噛み合っています。

複雑なオブジェクト

この例では複雑なオブジェクトが参照電話このことを、それが複数のサブオブジェクトで構成されています。

変更部分

これらの変化のいくつかは、それらが可変である、様々なサブオブジェクト電話にこの被験体を指します。

などメディアテック、クアルコム、エヌビディアのプロセッサ。

アルゴリズムセクション

携帯電話は、このように構成されていると仮定すると: - >プロセッサ - マザーボード>画面 - >完了

プロセッサは、マザーボードに搭載され、画面は、このように完全に構​​成された携帯電話に搭載しました。

実装コード

クラスモバイル:
     デフ __init__ (自己):
        自己。__cpu = なし
        自己。__screen = なし
        自己。__master = なし

    デフset_cpu(自己、値):
        自己。__cpu = 

    デフ(自己、値)set_screen:
        自己。__screen = 

    デフset_master(自己、値):
        自己。__master = 

    DEF  __repr__ (自己):
         戻り F ' <携帯電話(マスタ= {自己.__マスター}画面= {自己.__画面} CPU = {自己.__ CPU})> '


クラスAbsMobileBuild(abc.ABC):

    デフ __init__ (自己):
        self._mobile = モバイル()

    CPU部分
    @ abc.abstractmethod
     デフset_cpu(自己):
         パス

    マザーボードの一部
    @ abc.abstractmethod
     DEF set_master(セルフ):
         パス

    Screenセクション
    @ abc.abstractmethod
     DEF set_screen(セルフ):
         パス

    デフ get_result(自己) - > モバイル:
         リターンself._mobile


クラスMobileDirector:

    デフ __init__ (セルフビルド:AbsMobileBuild):
        self.build = ビルド

    デフ __call__(自己) - > モバイル:
        self.build.set_master()
        self.build.set_cpu()
        self.build.set_screen()
        リターンself.build.get_result()


クラスXiaoMiMobileBuild(AbsMobileBuild):
     デフset_cpu(自己):
        self._mobile.set_cpu(" 小米CUP " 

    デフset_master(自己):
        self._mobile.set_master(" キビマザーボード" 

    デフ(自己)set_screen:
        self._mobile.set_screen(" キビ画面" 


クラスHuaWeiMiMobileBuild(AbsMobileBuild):
     デフset_cpu(自己):
        self._mobile.set_cpu(" 华为CUP " 

    デフset_master(自己):
        self._mobile.set_master(" 華為マザーボード" 

    デフ(自己)set_screen:
        self._mobile.set_screen(" 華為画面" 


もし __name__ == " __main__ " 
    ビルド = XiaoMiMobileBuild()
    ディレクター = MobileDirector(ビルド)
    モバイル = ディレクター()
     印刷(モバイル)

    build1 = HuaWeiMiMobileBuild()
    director1 = MobileDirector(build1)
    携帯メール = director1()

    プリント(携帯メール)

 

おすすめ

転載: www.cnblogs.com/whnba/p/11953972.html