經由過程C++法式示例懂得設計形式中的外不雅形式。本站提示廣大學習愛好者:(經由過程C++法式示例懂得設計形式中的外不雅形式)文章只能為提供參考,不一定能成為您想要的結果。以下是經由過程C++法式示例懂得設計形式中的外不雅形式正文
舉一個生涯中的小例子,年夜凡開過學或許畢過業的都邑領會到如許一種愁悶:你要去 n個處所解決 n 個手續(如今年夜學歸並後就加倍費事,由於能夠那 n 個處所都隔的比擬遠)。
然則現實上我們須要的就是一個最初一道手續的證實罷了,關於後面的手續是怎樣辦的、到甚麼處所去解決我們都不感興致。
現實上在軟件體系開辟中也常常回會碰到如許的情形,能夠你完成了一些接口(模塊),而這些接口(模塊)都散布在幾個類中(好比 A 和 B、C、D):A 中完成了一些接口,B 中完成一些接口(或許 A 代表一個自力模塊,B、C、D 代表另外一些自力模塊)。然後你的客戶法式員(應用你設計的開辟人員)只要很少的要曉得你的分歧接口究竟是在誰人類中完成的,絕年夜多半只是想簡略的組合你的 A-D 的類的接口,他其實不想曉得這些接口在哪裡完成的。
這裡的客戶法式員就是下面生涯中想解決手續的愁悶的人!在實際生涯中我們能夠可以很快想到找一小我署理一切的工作便可以處理你的成績(你只需保護和他的簡略的一個接口罷了了!),在軟件體系設計開辟中我們可以經由過程一個叫做 Facade 的形式來處理下面的成績。
我們經由過程外不雅形式處理下面的成績,其典范的構造圖為:
外不雅形式的設法主意、思緒和完成都異常簡略,然則其思惟倒是異常成心義的。而且外不雅設計形式在現實的開辟設計中也是運用最廣、最多的形式之一。
運用示例:
假設你想吃一頓年夜餐,那末我想你要,起首去買菜,然後回抵家後本身做菜,最初吃完飯今後要洗碗掃除。
這麼一來你須要3個類,Shopper, Cook, Dishwasher, 分離來完成買菜,做菜,洗碗等任務,明顯這異常費事,能不克不及簡化這個進程?固然可以!去餐館吃。
餐館這時候候明顯就是外不雅形式了,他把龐雜的進程封裝到外部,用戶不消關懷細節。
完成代碼:
Shopper 推銷類
class Shopper { public: void shopForGroceries() { cout<<"買菜"<<endl; } };
Cook 廚師類
class Cook { public: void doCook() { cout<<"做飯"<<endl; } };
洗碗工類 Dishwasher
class Dishwasher { public: void washDish() { cout<<"洗碗"<<endl; } };
餐館類
class Restaurant { public: Restaurant() { } void haveAMeal() { m_shopper.shopForGroceries(); m_cook.doCook(); m_washer.washDish(); } private: Shopper m_shopper; Cook m_cook; Dishwasher m_washer; };
客戶端:
Restaurant rt; rt.haveAMeal();