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

抽象工廠(Abstract Factory Pattern)模式

系統 1844 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條評論
主站蜘蛛池模板: 久久国产精品免费一区二区三区 | 羞羞色男人的天堂伊人久久 | 国产午夜精品理论片久久影视 | 欧美一级视频免费观看 | 一级大片视频 | 色福利视频 | 中文字幕伦视频 | 四虎永久免费观看 | 成人在线免费 | 久草中文网 | 国产精品美女一区二区三区 | 美女视频免费在线观看 | 久久er99| 亚洲精彩| 好爽毛片一区二区三区四区 | 国产女人久久精品 | 久久精品视频大全 | 亚洲国产综合在线 | 久久综合久久久久 | 日本中文字幕一区二区有码在线 | 中文字幕一区二区三区 精品 | 欧美综合中文字幕久久 | 久久国产精品广西柳州门 | 亚洲国产精品综合久久2007 | 亚洲高清在线观看视频 | 国产亚洲精彩视频 | 国产精品mm | 毛片在线网址 | 精品国产日韩亚洲一区在线 | jizz成熟丰满中国妇女 | 国产精品第一 | jizz中国人| 免费一级毛片免费播放 | 99久久精品视香蕉蕉er热资源 | 免费的毛片网站 | 亚洲精品不卡久久久久久 | 亚洲一区在线视频观看 | 国产婷婷高清在线观看免费 | 日韩在线观看一区二区三区 | 久久中文字幕综合不卡一二区 | 午夜精品久久久久久久四虎 |