對使用者提供簡單的操作行為,程式內部卻可能是集合多個子系統進行複雜的運算動作.
例如:
購物網站上的購物車,當使用者登入後,在商品上輕鬆的點選加入購物車,就可以進行記錄甚至直接進行結帳動作!這對使用者僅是簡單的點擊行為,對購物網站的系統卻是經由使用者的登入進行身分驗證,在經由驗證後行為取得個人信用資料進行購物交易等複雜動作,而使用者卻不需理會!
使用方式:
namespace Library以上面的例子來說:
{
internal class SubsystemA {
internal string A1( )
{
return "Subsystem A, Method A1\n";
}
internal string A2( )
{
return "Subsystem A, Method A2\n";
}
}
internal class SubsystemB
{
internal string B1( )
{
return "Subsystem B, Method B1\n";
}
}
internal class SubsystemC
{
internal string C1( )
{
return "Subsystem C, Method C1\n";
}
}
}
public static class Facade
{
static SubsystemA a = new SubsystemA( );
static SubsystemB b = new SubsystemB( );
static SubsystemC c = new SubsystemC( );
public static void Operation1( )
{
Console.WriteLine("Operation 1\n" +a.A1( ) +a.A2( ) + b.B1( ));
}
public static void Operation2( )
{
Console.WriteLine("Operation 2\n" +b.B1( ) + c.C1( ));
}
}
使用namespace去包裝數個子系統,而使用Facade class作整合,並提供對外操作,而使用者是無法直接存取子系統的!
Facade.Operation1( );
Facade.Operation2( );
參考書籍c#3.0 design pattern
沒有留言:
張貼留言