亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

抽象工廠(Abstract Factory Pattern)模式

系統 1625 0

一, 結構

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

抽象工廠(Abstract Factory)角色: 擔任這個角色的是工廠方法模式的核心,它是與應用系統商業邏輯無關的。

具體工廠(Concrete Factory)角色: 這個角色直接在客戶端的調用下創建產品的實例。這個角色含有選擇合適的產品對象的邏輯,而這個邏輯是與應用系統的商業邏輯緊密相關的。

抽象產品(Abstract Product)角色: 擔任這個角色的類是工廠方法模式所創建的對象的父類,或它們共同擁有的接口。

具體產品(Concrete Product)角色: 抽象工廠模式所創建的任何產品對象都是某一個具體產品類的實例。這是客戶端最終需要的東西,其內部一定充滿了應用系統的商業邏輯。

?

二,示例代碼

    public interface AbstractFactory {
	public AbstractProductA CreateProductA();
  public AbstractProductB CreateProductB();
}

public class ConcreteFactory1 implements AbstractFactory {
  public AbstractProductA CreateProductA() {
    return new ProductA1();
  }
  public AbstractProductB CreateProductB() {
    return new ProductB1();
  }
}

public class ConcreteFactory2 implements AbstractFactory {
  public AbstractProductA CreateProductA() {
    return new ProductA2();
  }
  public AbstractProductB CreateProductB() {
    return new ProductB2();
  }
}

public interface AbstractProductA {
}

public interface AbstractProductB {
}

public class ProductA1 implements AbstractProductA {
}

public class ProductB1 implements AbstractProductB
{
  public void Interact( AbstractProductA a ) {
    Console.WriteLine( this + " interacts with " + a );
  }
}

// "ProductA2"
class ProductA2 : AbstractProductA
{
}

// "ProductB2"
class ProductB2 : AbstractProductB
{
  // Methods
  override public void Interact( AbstractProductA a )
  {
    Console.WriteLine( this + " interacts with " + a );
  }
}

// "Client" - the interaction environment of the products
class Environment
{
  // Fields
  private AbstractProductA AbstractProductA;
  private AbstractProductB AbstractProductB;

  // Constructors
  public Environment( AbstractFactory factory )
  {
    AbstractProductB = factory.CreateProductB();
    AbstractProductA = factory.CreateProductA();
  }
 
  // Methods
  public void Run()
  {
    AbstractProductB.Interact( AbstractProductA );
  }
}

/**//// <summary>
/// ClientApp test environment
/// </summary>
class ClientApp
{
  public static void Main(string[] args)
  {
    AbstractFactory factory1 = new ConcreteFactory1();
    Environment e1 = new Environment( factory1 );
    e1.Run();

    AbstractFactory factory2 = new ConcreteFactory2();
    Environment e2 = new Environment( factory2 );
    e2.Run();
  }
}
  

?

?

抽象工廠(Abstract Factory Pattern)模式


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产美女免费国产 | 国产精品一区牛牛影视 | 午夜视频入口 | 天天摸夜夜添狠狠添2018 | 九九碰| 午夜网站在线观看免费网址免费 | 中文字幕一区二区三区视频在线 | 在线观看国产一区二区三区99 | 加勒比一本大道在线 | caoporm超免费公开视频 | 神马影院888不卡院 神马影院不卡不卡在线观看 | 干成人 | 日本免费一区二区久久人人澡 | 日本黄色免费一级片 | 日韩中文字幕在线观看视频 | 精品久久久久久久九九九精品 | 精品欧美一区二区三区在线 | 337p亚洲精品色噜噜狠狠 | 国产欧美一区二区精品性色 | 国产在视频线精品www666 | 四虎影视国产在线观看精品 | 婷婷综合在线 | 色婷婷色综合缴情在线 | 国产在热线精品视频国产一二 | 国产精品久久久久天天影视 | 欧美日韩亚洲一区 | 国产精品日韩欧美一区二区 | 日韩欧美中文字幕一区二区三区 | 亚洲丶国产丶欧美一区二区三区 | 欧美成人一区二区三区在线视频 | 国产精品午夜高清在线观看 | 久草热久草在线 | 色婷婷视频在线观看 | 久久精品国产亚洲片 | 美女视频免费在线观看 | 一级黄色录像毛片 | 国产精品毛片天天看片 | 女胁师~牝奴隷调教 | 青青久久精品国产免费看 | www.国产.com | 免费看一级欧美毛片视频 |