定義:
抽象化と分離、彼らは独立して変化させることができるようになっています。その代わりに継承の組み合わせの関係によって達成され、抽象化は、カップリングの二つの可変程度の寸法を小さくするために実装します。
役割:
抽象(抽象)の役割:抽象クラスの定義とオブジェクトの実現への参照が含まれています。
抽象(洗練された抽象化)の役割を拡張:抽象化の役割は役割を呼び出すビジネス関係を達成するために、親クラスのビジネスメソッドを実装し、方法を組み合わせて、サブクラスです。
(実装側)の役割の実現:拡張抽象ロールコールのためのインターフェースの実現の役割を定義します。
(コンクリート実装側)の具体的な実現は、役割:インタフェースの特定の実装の役割を与えられた達成するために。
例えば:
車は多くの(車、バス)に分割し、それぞれの車を使用すると、継承の方法を使用している場合、我々はこれらのシナリオを達成することができ、異なる道路(街路、高速道路)上で実行されます
が、それは、コードになるなるだろうそうしますスケーラブルなラインが悪いですが、それは同じ使用ブリッジモードではありません
抽象 クラスロード{ 公共 $カー。 パブリック 関数 __construct(カー$カー){ $この - >車= $カー。 } パブリック 抽象 関数の実行(); } クラスのスピードウェイは、拡張ロード{ パブリック 関数の実行(){ エコー $この - >カルボ>名前を「スピードウェイ\ nに実行します」。 } } クラスストリート延び道{ パブリック 関数の実行を(){ エコー $この - >カルボ>名前"ストリート\ nに実行します"。; } } 抽象 クラスの車{ パブリック $名; } クラス SmallCarは延び車{ パブリック 関数__construct(){ $この - >名前= "SmallCar" 。 } } クラスバス延び車{ パブリック 関数__construct(){ $本 >名= "バス"を- 。 } } $ small_car = 新しいSmallCar(); $スピードウェイ = 新しいスピードウェイ($ small_car )。 $スピードウェイ - > ファイル名を指定して実行(); $バス = 新しいバス(); $ストリート = 新しいストリート($バス)。 $ストリート - >ファイル名を指定して実行();
使用シナリオ:
そこに二つの独立した次元クラスの変更があり、これら2次元の拡張が必要なとき。
システムは継承を使用したくない場合は、マルチレベルの継承はシステムクラスの数の急激な増加につながったと。
このシステムは、抽象と具象的な役割の役割部材との間に、より多くの柔軟性を追加する必要がある場合。