设计模式笔记(八) —— 外观模式

来源:互联网 发布:淘宝怎么领优酷会员 编辑:程序博客网 时间:2024/05/22 03:04

外观模式(Facade):为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这个子系统更加容易使用。
     使用场合
     第一:在设计初期阶段,应该有意识的将不同的两个层分离,层与层之间建立外观(Facade)
     第二:在开发阶段,子系统因为不断的重构演化而变得越来越复杂,增加外观可以提供一个简单的接口,减少它们之间的依赖。
     第三,在维护一个遗留的大系统时,可能这个系统已经非常难以维护和扩展了,为新系统开发一个外观Facade类,来提供设计粗糙或者高度复杂的遗留代码的比较清晰简单的接口,让新系统与Facade对象交互,Facade与遗留代码交互所有复杂的工作。 

  1. using System;
  2. namespace StuDesignMode.Facade
  3. {
  4.     /// <summary>
  5.     /// 投资股票
  6.     /// </summary>
  7.     class Stock
  8.     {
  9.         public void Buy()
  10.         {
  11.             Console.WriteLine("买入股票。");
  12.         }
  13.         public void Sell()
  14.         {
  15.             Console.WriteLine("卖出股票。");        
  16.         }
  17.     }
  18.     /// <summary>
  19.     /// 投资国债
  20.     /// </summary>
  21.     class NationalDebt
  22.     {
  23.         public void Buy()
  24.         {
  25.             Console.WriteLine("买入国债。");
  26.         }
  27.         public void Sell()
  28.         {
  29.             Console.WriteLine("卖出国债。");
  30.         }
  31.     }
  32.     /// <summary>
  33.     /// 基金
  34.     /// </summary>
  35.     class Fund
  36.     {
  37.         private Stock _stock;
  38.         private NationalDebt _nationalDebt;
  39.         public Fund()
  40.         {
  41.             _stock = new Stock();
  42.             _nationalDebt = new NationalDebt();
  43.         }
  44.         /// <summary>
  45.         /// 买入基金
  46.         /// </summary>
  47.         public void BuyFund()
  48.         {
  49.             _stock.Buy();
  50.             _nationalDebt.Buy();
  51.         }
  52.         /// <summary>
  53.         /// 赎回基金
  54.         /// </summary>
  55.         public void SellFund()
  56.         {
  57.             _stock.Sell();
  58.             _nationalDebt.Sell();
  59.         }
  60.     }
  61.     public class ClientTest
  62.     {
  63.         static void Main(string[] args)
  64.         {
  65.             Fund fund = new Fund();
  66.             //买入基金
  67.             fund.BuyFund();
  68.             //赎回基金
  69.             fund.SellFund();
  70.         }
  71.     }
  72. }
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 思维缓慢发呆书呆子怎么办 苹果手机网速慢怎么办? 在美国警察杀人怎么办? 征兵填写不知道怎么办 长虹子画面关怎么办 土地被村长霸占怎么办 半夜 手机卡掉了怎么办 淘宝号买家违规怎么办 镍氢电池没电了怎么办 地下室对讲机信号不好怎么办 cf不能说话了怎么办 cf没办法说话怎么办 cf对讲机没声音怎么办 交警用的对讲机怎么办 cf语音没有声音怎么办 去上海没有流量怎么办 去外地没流量怎么办 外地流量不够用怎么办 手机在外地流量怎么办 联通网卡在外地怎么办 套餐流量不够用怎么办 省内流量去省外怎么办 在外省流量不够怎么办 榨汁机开关坏了怎么办 健伍dvd没遥控器怎么办 佳能 显示屏关不了怎么办 iqos充电闪红灯怎么办 航班取消了乘客怎么办 摩托罗拉电话静音了怎么办 对讲机话筒坏了怎么办 摩托罗拉xt1570费电怎么办 主板没有rgb接口怎么办 对讲机频段没了怎么办 怀孕查出宫颈囊怎么办 办养殖场没地怎么办 宝宝睡觉衣服湿透怎么办 开衫衣服往下滑怎么办 迷你世界没有牛怎么办 火龙果树烂了怎么办 误喝鸵鸟墨水怎么办 被鸵鸟啄伤怎么办