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

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

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

      抽象工廠模式之我用

      我們關注的內容:

      1 使用場景分析

      2 案例代碼解析

      一 使用場景分析

      抽象工廠模式,為創建一組相關或項目依賴的對象提供一個接口,而且無需指定他們具體的類。抽象工廠模式的通用類圖如下:

      image

      通俗的來講:擁有共同的屬性和方法體,但是具體的實現內容不同,即可使用抽象工廠模式。

      二 案例代碼解析

      案例場景:B2C電子商務的支付系統,一個電子商城需要集成不同方式的支付系統,比如支付寶,網銀在線,paypal等,他們共同的特點是需要用戶提供用戶資料,支付完成之后反饋給系統一個狀態或數據。

      具體實現圖如下:

      image

      先創建一個支付的抽象類AbstractPay:

      public abstract class AbstractPay
          {
              /// <summary>
              /// 生成支付鏈接
              /// </summary>
              /// <returns></returns>
              public abstract string Pay();
              /// <summary>
              /// 支付完成之后對支付結果進行記錄
              /// </summary>
              /// <returns></returns>
              public abstract string PayResutl();
          }
      根據支付需求,產生不同實現的支付方式,支付寶實現Zhifubao:
      public class Zhifubao:AbstractPay
          {
              public override string Pay()
              {
                  string result = "zhifubao.com";
                  return result.ToString();
              }
              public override string PayResutl()
              {
                  return "支付寶成功支付!";
              }
          }

      網銀在線實現BankOnLine:

      public class BankOnLine : AbstractPay
          {
              public override string Pay()
              {
                  string result = "bankonline.com";
                  return result.ToString();
              }
              public override string PayResutl()
              {
                  return "網銀在線成功支付!";
              }
          }
      現在開始創建這個工廠,具體代碼如下:
      public abstract class PayFactory
          {
      
              public static Zhifubao CreateZhifubao()
              {
                  return new Zhifubao();
              }
              public static BankOnLine CreateBankOnLine()
              {
                  return new BankOnLine();
              }
          }

      客戶端調用如下:

                  AbstractPay zfb = PayFactory.CreateZhifubao();
                  Console.WriteLine(zfb.Pay());
                  Console.WriteLine(zfb.PayResutl());
      
                  AbstractPay oline = PayFactory.CreateBankOnLine();
                  Console.WriteLine(oline.Pay());
                  Console.WriteLine(oline.PayResutl());

      輸出結果圖:

      image

      提升:現在開始思考,如果我新增一個支付方式paypal,該如何做呢?

      新增一個paypal類實現:

       public class Paypal: AbstractPay
          {
              public override string Pay()
              {
                  string result = "paypal.com";
                  return result.ToString();
              }
              public override string PayResutl()
              {
                  return "paypal成功支付!";
              }
          }

      下面就要修改工廠才能實現,如何不用修改工廠就能實現呢?可以使用反射的原理來實現。將工廠類修改如下:

      public abstract class PayFactory
          {
              
      
              protected static string myAssemblyName = "FactoryTest";
              protected static string Mynamespace = "DesignPattern.";
              public static AbstractPay CreatePay(string ClassName)
              {
                  return (AbstractPay)Assembly.Load(myAssemblyName).CreateInstance(Mynamespace + ClassName);
              }
          }

      客戶端調用如下:

                  AbstractPay paypal = PayFactory.CreatePay("Paypal");
                  Console.WriteLine(paypal.Pay());
                  Console.WriteLine(paypal.PayResutl());
      是不是不下次再新增一種支付方式的時候就不用修改工廠類了呢微笑

      歡迎大家一起探討最佳實現方式!

      posted @ 2012-02-29 11:46  wxj200589  閱讀(549)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲爆乳WWW无码专区| 欧美成人精品三级网站视频| 国内精品久久人妻无码不卡| 国产成人精品2021欧美日韩| 亚洲精品麻豆一二三区| 国产精品国产亚洲看不卡| 99精品伊人久久久大香线蕉| 国产成人午夜福利在线播放| 日韩女同一区二区三区久久| 国产精品中文字幕观看| 久久久亚洲欧洲日产国码αv | 国产午夜A理论毛片| 国产怡春院无码一区二区| 久久精品夜夜夜夜夜久久| 石狮市| 精品国产成人午夜福利| 日韩精品区一区二区三vr| 国产午夜福利视频在线观看| 在线无码午夜福利高潮视频| 亚洲综合久久一区二区三区| 亚洲中文字幕无码av永久| 激情五月日韩中文字幕| 亚洲无人区码一二三区别| 最新国产精品拍自在线播放| 欧美日韩精品一区二区三区高清视频 | 久久精品免视看国产成人| 久久久久成人精品| 亚洲综合欧美在线…| 国产亚洲精品第一综合另类| 久久99热只有频精品8| 亚洲爆乳少妇无码激情| 在线精品国精品国产尤物| 美女一区二区三区在线观看视频 | 崇州市| 亚洲另类激情专区小说婷婷久| 99re6这里有精品热视频| 97久久精品人人澡人人爽| 日韩激情一区二区三区| 亚洲三级香港三级久久| 国产综合色产在线精品| 玩弄放荡人妻少妇系列|