程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 我的Design Pattern之旅[5]:Facade Pattern(OO)(1)

我的Design Pattern之旅[5]:Facade Pattern(OO)(1)

編輯:關於C語言

Intent

替子系統裡的一堆介面定義一套統一的高階介面,讓子系統更易使用。

Introduction

Facade常用在兩個地方,第一種用法是將原來程序導向的系統,利用Facade包成OO,如MFC包裝Win32 API,第二種用法是將原來復雜的OO系統,再包成更簡單的OO,如.NET Enterprise Library將.NET Framework再做一次包裝,讓你更容易使用.NET。另外3-tIEr也是典型Facade的應用,DAL(Data Access Layer)就是一個Facade,讓BLL(Business Logic Layer)在存取資料時,不用對付ADO.Net復雜的機制,只需面對DAL即可。

Sample Code

如我們坐捷運買票,目前的賣票的機器只能吃銅板,所以得另外的提供換鈔機,讓旅客將紙幣換成銅板,也就是說,若一個旅客身上只有紙幣又要賣捷運票,他必須做兩個步驟,先將紙幣換成銅板,再用銅板去買車票。

1/**//*
2(C) OOMusou 2007 http://oomusou.cnblogs.com
3
4Filename  : DP_FacadePattern1_before.cpp
5Compiler  : Visual C++ 8.0 / BCB 6.0 / gcc 3.4.2 / ISO C++
6Description : Demo how to use Facade pattern (before)
7Release   : 04/24/2007 1.0
8*/
9#include <iOStream>
10
11using namespace std;
12
13struct Bill {
14 int value;
15 Bill(int value) : value(value) {}
16};
17
18struct Coin {
19 int value;
20 Coin(int value) : value(value) {}
21};
22
23class BillToCoinMachine {
24public:
25 Coin getCoin(Bill bill) {
26  return Coin(10);
27 }
28};
29
30class CoinToTicketMachine {
31public:
32 void getTicket(Coin coin) {
33  cout << "Get ticket" << endl;
34 }
35};
36
37int main() {
38 BillToCoinMachine Machine1;
39 Coin coin = Machine1.getCoin(Bill(100));
40
41 CoinToTicketMachine Machine2;
42 Machine2.getTicket(coin);
43}

執行結果

Get ticket

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved