ホームページ >バックエンド開発 >PHPチュートリアル >PHP デザインパターンの 6 つの原則 (6): ディミットの法則
<?phpclass Teacher { //老师对学生发布命令,清一下女生 public function commond(GroupLeader $groupLeader){ //初始化女生 for($i=0; $i<20; $i++){ $listGirls[] = new Girl(); } //告诉体育委员开始执行清查任务 $groupLeader -> countGirls($listGirls); }}class GroupLeader { //有清查女生的工作 public function countGirls($listGirls = array()){ echo '女生的数量是:' . sizeof($listGirls); }}class Girl {}class Client { public static function doing() { $teacher= new Teacher(); //老师发布命令 $teacher -> commond(new GroupLeader()); }}Client :: doing();class Teacher { public function commond(GroupLeader $groupLeader){ //告诉体育委员开始执行清查任务 $groupLeader -> countGirls(); }}class GroupLeader { private $_listGirls = array(); //传递全班的女生 public function __construct($listGirls){ $this -> _listGirls = $listGirls; } //有清查女生的工作 public function countGirls(){ echo "女生数量是:" . sizeof($this -> _listGirls); } }class Girl {}class Client { public static function doing() { //初始化女生 for($i=0; $i<20; $i++){ $listGirls[] = new Girl(); } $teacher= new Teacher(); //老师发布命令 $teacher -> commond(new GroupLeader($listGirls)); }}Client :: doing();
オブジェクトは、他のオブジェクトについては最小限の情報を持っている必要があります。
ディミットの法則の中核は、クラス キーの結合を減らし、それによってクラスの再利用性を向上させることです。
具体的な表現:
① クラス分割の観点から、弱い結合を持つクラスを作成する必要があります。
② クラス構造の設計に関して、各クラスはクラスの数を減らすように努めるべきです。
③ クラス設計では、可能な限り、クラスは不変クラスになるように設計する必要があります。
④ 他のクラスへの参照に関して、あるオブジェクトから他のオブジェクトへの参照。
⑤ クラスのアクセス権をできるだけ減らすようにしてください。
⑥ シリアル化機能は慎重に使用してください (クラスまたはインターフェイスはクライアント上で変更されますが、サーバー上では同期的に更新されません)。シリアル化の失敗とプロジェクト管理の簡単な怠慢を引き起こします);
⑦ クラスのメンバーを公開せず、対応するアクセサー (プロパティ) を提供します。
デミットの法則は主にオブザーバー モードとメディエーター モードで使用されます
デメテルの法則の欠点:
1. デメテルの法則はクラスに従います。各部品が離れたオブジェクトに直接関係しないため、システムのローカル設計が簡素化されますが、異なるモジュール間の通信効率も低下するため、異なるモジュール間でシステムを調整するのは容易ではありません。
2. システム内に多数の小さなメソッドを作成し、システムの隅々に散在させます。これらのメソッドは間接的な呼び出しを渡すだけであり、システムのビジネス ロジックとは何の関係もありません。