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

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

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

      結合項目實例 回顧傳統設計模式(十)狀態模式

      2011-10-07 09:34  熬夜的蟲子  閱讀(651)  評論(0)    收藏  舉報

      談到狀態模式我們在這里所談論的是一個通用的技巧:如何對對象內的狀態建模----通過創建一個實例變量來持有狀態值,并在方法內書寫條件代碼來處理不同狀態。我們要把一個狀態的所有行為放在一個類中。這么一來我們將行為局部化了,并使得事情更容易改變和理解。

      蟲子還是拿訂單系統來說事了

       

      /// <summary>
          
      /// 狀態接口
          
      /// </summary>
          public interface SimpleState
          {
              //檢查購物車
              void CheckCart();
              //檢查賬號
              void CheckAcount();
              //提交訂單
              void OrderSumbit();
          }

          public class Order
          {
              //初始狀態
              SimpleState initsate;
              //待審核狀態
              SimpleState Pendingsate;
              //提交后狀態
              SimpleState submittedsate;

              public Order()
              {
                  initsate = new InitState(this);
                  Pendingsate = new Pendingsate(this);
                  submittedsate = new submittedsate(this);
              }

              private SimpleState state;

              public void setState(SimpleState state)
              {
                  this.state = state;
              }

              public SimpleState getInitState()
              {
                  return initsate;
              }
              public SimpleState getPendingsate()
              {
                  return Pendingsate;
              }
              public SimpleState getsubmittedsate()
              {
                  return submittedsate;
              }

          }

          public class InitState : SimpleState
          {
              Order order;
              public InitState(Order order)
              {
                  this.order = order;
              }
              public void CheckCart()
              {
                  Console.WriteLine("訂單進入初始狀態");
                  order.setState(order.getInitState());
              }
              public void CheckAcount()
              {
                  Console.WriteLine("訂單進入待審核狀態");
                  order.setState(order.getPendingsate());
              }
              public void OrderSumbit()
              {
                  Console.WriteLine("該狀態不能進入此步驟");           
              }

            
          }

          public class Pendingsate : SimpleState
          {
              Order order;
              public Pendingsate(Order order)
              {
                  this.order = order;
              }
              public void CheckCart()
              {
                  Console.WriteLine("該狀態不能進入此步驟");
              }
              public void CheckAcount()
              {
                  Console.WriteLine("訂單進入待審核狀態");
                  order.setState(order.getPendingsate());
              }
              public void OrderSumbit()
              {
                  Console.WriteLine("訂單進入提交狀態");
                  order.setState(order.getsubmittedsate());
              }
          }

          public class submittedsate : SimpleState
          {
              Order order;
              public submittedsate(Order order)
              {
                  this.order = order;
              }
              public void CheckCart()
              {
                  Console.WriteLine("該狀態不能進入此步驟");
              }
              public void CheckAcount()
              {
                  Console.WriteLine("該狀態不能進入此步驟");       
              }
              public void OrderSumbit()
              {
                  Console.WriteLine("訂單進入提交狀態");
                  order.setState(order.getsubmittedsate());
              }
          }

       

      總結:狀態模式允許對象在內部狀態改變時改變它的行為,對象看起來好像修改了它的類。因為這個模式將狀態封裝成獨立的類,并將動作委托到代表當前狀態的對象,我們知道行為會隨著內部狀態改變而改變。從客戶的視角來看,如果你使用的對象能夠完全改變它的行為,那么你會覺得,這個對象實際上市用別的類實例化而來的。然而,實際上,我們是在使用組合通過簡單引用不同的狀態對象來造成類改變的假象。
      主站蜘蛛池模板: 国产精品人成视频免费播放| 草草线在成年免费视频2| 亚洲一区二区三区久久综合| 亚洲国产精品午夜福利| 国产在线观看播放av| 亚洲av永久一区二区| 日韩成人福利视频在线观看| 在线日韩日本国产亚洲| 怡红院一区二区三区在线| 人人妻人人澡人人爽人人精品av | 99精品视频在线观看免费蜜桃| 国产极品精品自在线不卡| 国产在线午夜不卡精品影院 | 新泰市| 视频一区视频二区在线视频| 猫咪AV成人永久网站在线观看 | 无码抽搐高潮喷水流白浆| 国产精品成| 在线天堂最新版资源| 最新中文字幕av无码专区不| 国产无人区码一区二区| 中国少妇人妻xxxxx| 亚洲人成网站在线观看播放不卡| 99精品国产成人一区二区| 久久综合久中文字幕青草| 亚洲一区二区三区 无码| 最近中文字幕完整版2019| 人妻丝袜无码专区视频网站| Y111111国产精品久久久| 极品尤物被啪到呻吟喷水| 亚洲精品日本久久久中文字幕 | 精品一卡2卡三卡4卡乱码精品视频 | 国产suv精品一区二区883| 色九九视频| 人妻少妇一区二区三区| 国产第一页浮力影院入口| 中卫市| 中文字幕一区二区久久综合 | 国产超高清麻豆精品传媒麻豆精品| 精品国产高清中文字幕| 无码人妻一区二区三区AV|