c++設計モードの外観モード
1318 ワード
ディミット法則:2つのクラスが互いに直接通信する必要がない場合、この2つのクラスは直接的な相互作用を起こすべきではない.
いずれかのクラスが別のクラスのメソッドを呼び出す必要がある場合は、第三者を介して転送できます.
ディミット法則のまず強調する前提はクラスの構造設計において、各クラスはできるだけメンバーのアクセス権限を下げなければならない.つまり、1つのクラスは自分のprivate状態を包装し、他のクラスに知られるフィールドや行為を公開しないことだ.
クラス間の結合が弱いほど多重化に有利であり,弱い結合にあるクラスが修正され,関係するクラスに波及しない,すなわち情報の隠蔽がソフトウェアの多重化を促進する
外観モード:
外観モードは、サブシステム内のインタフェースのセットに一貫したインタフェースを提供し、このモードは、このサブシステムをより容易に使用できる高レベルインタフェースを定義します.
外観モードを使用するタイミング:
まず設計初期段階では,異なる2つの層を意識的に分離すべきである.
複雑なサブクラスシステムを1つのインタフェースにカプセル化し、統一的に管理し、サブクラスシステムとユーザー間の結合性を大幅に低下させる.
大規模なシステムを開発するとき、システムの外観Facadeクラスを開発して、粗い設計や高度に複雑なレガシーコードの比較的明確なインタフェースを提供して、システムをFacadeオブジェクトとインタラクティブにすることができます.
いずれかのクラスが別のクラスのメソッドを呼び出す必要がある場合は、第三者を介して転送できます.
ディミット法則のまず強調する前提はクラスの構造設計において、各クラスはできるだけメンバーのアクセス権限を下げなければならない.つまり、1つのクラスは自分のprivate状態を包装し、他のクラスに知られるフィールドや行為を公開しないことだ.
クラス間の結合が弱いほど多重化に有利であり,弱い結合にあるクラスが修正され,関係するクラスに波及しない,すなわち情報の隠蔽がソフトウェアの多重化を促進する
外観モード:
外観モードは、サブシステム内のインタフェースのセットに一貫したインタフェースを提供し、このモードは、このサブシステムをより容易に使用できる高レベルインタフェースを定義します.
外観モードを使用するタイミング:
まず設計初期段階では,異なる2つの層を意識的に分離すべきである.
複雑なサブクラスシステムを1つのインタフェースにカプセル化し、統一的に管理し、サブクラスシステムとユーザー間の結合性を大幅に低下させる.
大規模なシステムを開発するとき、システムの外観Facadeクラスを開発して、粗い設計や高度に複雑なレガシーコードの比較的明確なインタフェースを提供して、システムをFacadeオブジェクトとインタラクティブにすることができます.
/*
, ,
*/
#include
using namespace std;
/* */
class SubSystemOne
{
public:
void MethorOne()
{
cout<MethorOne();
two->MethorTwo();
}
void MethorB()
{
cout<MethorThree();
four->MethorFour();
}
};
/*
, Facade
*/
void main()
{
Facade facade;
facade.MethorA();
facade.MethorB();
}