如果我不需要特殊的工廠類,並且我想要一個具體的客戶端實例化正確的零件,該怎麼辦。客戶端需要從該部分調用Hello()。其他地方的重點是使工廠方法成爲特殊創建者類的一種方法。但是這裏馬上就在客戶端。這仍然是一個工廠方法模式,它是正確的使用它如下所示?這仍然是一種工廠方法嗎?
using System;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
AClient c1 = new ClientUsingPart1();
c1.Foo();
AClient c2 = new ClientUsingPart2();
c2.Foo();
Console.ReadKey();
}
}
abstract class AClient
{
public AClient() { this.ipart = Create(); }
public void Foo() { ipart.Hello(); }
// many other methods
// ...
public abstract IPart Create(); // factory method
IPart ipart;
}
class ClientUsingPart1 : AClient
{
public override IPart Create() { return new Part1(); }
}
class ClientUsingPart2 : AClient
{
public override IPart Create() { return new Part2(); }
}
interface IPart
{
void Hello();
}
class Part1 : IPart
{
public void Hello() { Console.WriteLine("hello from part1"); }
}
class Part2 : IPart
{
public void Hello() { Console.WriteLine("hello from part2"); }
}
}
我會看看StructureMap,但我想知道我的實際問題的答案。最重要的是它仍然是一個有效的工廠方法模式示例? – Firkraag 2012-07-21 12:57:40