<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12
      代碼改變世界

      結(jié)合項目實例 回顧傳統(tǒng)設(shè)計模式(一)策略模式

      2011-09-09 10:21  熬夜的蟲子  閱讀(1234)  評論(1)    收藏  舉報

      蟲子以前在一家電商公司 會員的模塊在這里分類很明確

      不同的會員所具有的權(quán)限和行為不同,大多程序員會使用標(biāo)準(zhǔn)的oo技術(shù),設(shè)計一個會員超類SuperUser,并讓各種商家會員繼承此超類

      到這里無可厚非,但是在下面?zhèn)€過程中你可以就慢慢體會策略模式與你在代碼里不停寫邏輯判斷所帶來的區(qū)別有多大

      所有的會員都具有下列行為
      購物,評價,發(fā)布商品

      View Code
      public abstract class SuperUser
          {
              public SuperUser()
              {
              }
              public void shopping()
              {
                  Console.WriteLine("shopping");
              }
              public void Comment()
              {
                  Console.WriteLine("Comment");
              }
              public abstract void Promote();
              
          }
          public class UserA : SuperUser
          {
              public override void Promote()
              {
                  Console.WriteLine("推廣A類商品");
              }
          }
          public class UserB : SuperUser
          {
              public override void Promote()
              {
                  Console.WriteLine("推廣B類商品");
              }
          }

      因為不同商家會員只能推廣指定類型的商品所以這里Promote方法抽象出來

      好吧 現(xiàn)在我們來了一個新需求 對于B類的用戶 進行購物折價

      加在什么地方 超類? 不 并不是所有的會員都擁有折價 邏輯判斷? 是個方法 不過對于不斷需求的變更 在龐大臃腫的領(lǐng)域模型中 時間長了 也hold不住 更何況還不停有不同的商家會員分類加進來 并且在大型web架構(gòu)中作為基站的程序不適合頻繁更新

      既然這樣 利用接口如何 對改變關(guān)閉 對擴展開放

      View Code
      public interface discountBehavior
          {
               void discount();
          }

          public class diswithB : discountBehavior
          {
              public void discount()
              {
                  Console.WriteLine("能打折扣呃");
              }
          }

          public class Nodis : discountBehavior
          {
              public void discount()
              {
                  Console.WriteLine("不能打折扣");
              }
          }

          public abstract class SuperUser
          {
              public SuperUser()
              {
              }
              public void shopping()
              {
                  Console.WriteLine("shopping");
              }
              public void Comment()
              {
                  Console.WriteLine("Comment");
              }
              public abstract void Promote();

              public discountBehavior dcbehavior;
              public void discount()
              {
                  dcbehavior.discount();
              }
              
          }
          public class UserA : SuperUser, discountBehavior
          {
              public UserA()
              {
                  dcbehavior = new Nodis();
              }
              public override void Promote()
              {
                  Console.WriteLine("推廣A類商品");
              }
          }
          public class UserB : SuperUser, discountBehavior
          {
              public UserB()
              {
                  dcbehavior = new diswithB();
              }
              public override void Promote()
              {
                  Console.WriteLine("推廣B類商品");
              }
          }

      下面我們再來試試動態(tài)設(shè)定行為

      在超類中加個方法

      View Code
       public void setdiscountBehavior(discountBehavior dh)
              {
                  dcbehavior = dh;
              }

      這樣就可以“隨時”調(diào)用這個方法 改變會員的行為

       

      總結(jié):

      策略模式:針對接口編程,而不是針對實現(xiàn)編程。多用組合少用繼承。策略模式定義了算法簇,分別封裝起來,讓它們之間可以互相替換,此模式讓算法的變化獨立于使用算法的客戶。

       

      主站蜘蛛池模板: 99riav精品免费视频观看| 日韩精品一区二区三区在| 99久久精品国产亚洲精品| 与子乱对白在线播放单亲国产 | 艳妇乳肉豪妇荡乳在线观看| 亚洲另类激情专区小说图片| 久久精品人妻无码一区二区三区| 99精品久久精品| 中文字幕国产精品资源| 97国产成人无码精品久久久| 狠狠色噜噜狠狠狠狠7777米奇| 国产成人啪精品视频免费网| 久久人妻精品国产| 亚洲日韩亚洲另类激情文学| 少妇人妻偷人精品一区二| 亚洲日韩乱码一区二区三区四区 | 久久88香港三级台湾三级播放| 精品嫩模福利一区二区蜜臀| 人妻无码vs中文字幕久久av爆| 国产乱妇乱子视频在播放| 国产精品三级中文字幕| 又大又粗又爽18禁免费看| 久久综合狠狠综合久久激情| 久久精品第九区免费观看| 长子县| 国产一区二区三区我不卡| 欧洲精品色在线观看| 少妇粉嫩小泬喷水视频www| 伊人色综合九久久天天蜜桃| 国产女人18毛片水真多1| 国产精品久久一区二区三区| 116美女极品a级毛片| 亚洲第一国产综合| 亚洲成人av在线高清| 熟妇人妻不卡中文字幕| 亚洲精品综合网中文字幕| 免费无码AV一区二区波多野结衣| 国产免费无遮挡吃奶视频| 国产一区二区亚洲av| 亚洲尤码不卡av麻豆| 日本熟妇XXXX潮喷视频|