[英]Abstract Factory pattern
這是關於抽象工廠模式。
我們知道有兩種方法可以使用,即
如果我使用選項1,那么有人可以說出優勢/劣勢,那么這些是可能發生的問題,反之亦然,如果可能的話,使用實時示例。
提前致謝...
直接創建對象肯定很容易 (C#中的示例):
public class Consumer()
{
public void DoStuff()
{
var f = new Foo()
f.DoIt("bar");
}
}
雖然容易,但它會導致緊耦合,因為您無法獨立於消費者而改變實例。
雖然更復雜 ,但使用抽象工廠的消費者松散耦合 :
public class Consumer()
{
private readonly IFooFactory fooFactory;
public Consumer(IFooFactory fooFactory)
{
if (fooFactory == null)
{
throw new ArgumentNullException("fooFactory");
}
this.fooFactory = fooFactory;
}
public void DoStuff()
{
var f = this.fooFactory.Create();
f.DoIt("bar");
}
}
這看起來比第一個版本更復雜,但現在您可以獨立於Consumer
改變f
的實現。
您不僅可以更改實施 ,還可以在不同的消費者之間重用或共享實例。
在許多情況下,您不需要抽象工廠來啟用松耦合。 通常,您可以直接將依賴項注入到使用者中,而不是訴諸於額外的間接級別。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.