第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

工廠如何以抽象工廠模式訪問其他工廠的產(chǎn)品

工廠如何以抽象工廠模式訪問其他工廠的產(chǎn)品

C#
動漫人物 2021-04-10 09:11:17
在此示例中,對于NYPizzaIngredientFactory,他們只能使用ThinCrustDough制作披薩。我如何制作可以使用其他工廠的食材的比薩餅,例如ChicagoPizzaIngredientFactory的ThickCrustDough。我想嘗試遠(yuǎn)離構(gòu)建器,并堅持使用抽象的工廠模式和工廠方法。
查看完整描述

2 回答

?
白板的微信

TA貢獻(xiàn)1883條經(jīng)驗 獲得超3個贊

NYPizzaStore將不得不使用的ChicagoPizzaIngredientFactory,如果你希望它能夠使用ThickCrustDough

但是,如果您考慮這種做法的實(shí)用性,讓他們向您運(yùn)送芝加哥的食材可能就沒有意義了。

在我看來,您有兩種選擇:

  1. 在紐約設(shè)有另一家可以生產(chǎn)濃面團(tuán)的工廠(例如NYThickPizzaIngredientFactory)。這是因為您的界面只有一個createDough不帶參數(shù)的方法,因此您無法告訴它要制作哪種面團(tuán)。它只能使一個。

  2. 更改您的界面,使該createDough方法接受可以告訴工廠要制造哪種面團(tuán)的參數(shù)。這是我推薦的。

參數(shù)的類型也可以基于特定的工廠。例如:

//TDoughArts tells you what type of arguments the factory needs in order to make dough.

public interface IPizzaIngredientFactory<TDoughArgs> where TDoughArgs : IDoughArgs      

{

    //....

    IDough CreateDough(TDoughArgs doughArgs);

    //....

}


public interface IDoughArgs

{


}


public class NYPizzaDoughArgs : IDoughArgs

{

    public enum DoughTypes

    {

        Thin = 0,

        Thick = 1

    }


    public DoughTypes DoughType { get; set; }

}


public class NYPizzaIngredientFactory : IPizzaIngredientFactory<NYPizzaDoughArgs>

{

    //....

    public IDough CreateDough(NYPizzaDoughArgs doughArgs)

    {

        //Make the right dough based on args here

        if(doughArgs.DoughType == DoughTypes.Thin)

            //...

    }

    //....

}

我在幾分鐘內(nèi)就提出來了,因此請檢查一致性,但是我想您會明白的。


您不必使用泛型。IDoughArgs如果您不想獲得更多的特異性,則可以堅持使用該界面。


用法:


var factory = new NYPizzaIngredientFactory();

var args = new NYPizzaDoughArgs();

args.DoughType = NYPizzaDoughArgs.DoughTypes.Thick;

var dough = factory.createDough(args);


查看完整回答
反對 回復(fù) 2021-04-24
  • 2 回答
  • 0 關(guān)注
  • 194 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號