2013-02-06 34 views
1
public class ConcreteService1: IService1 
{ 
private IService2 _service2; 
public void doSomething() 
{ 
    _service2 = new ConcreteService2(); 
..... 
} 


} 

public class ConcreateService2: IService2 
{ 
private IService1 _service1; 
public void doSomething() 
{ 
_service1 = new ConcreteService1(); 
..... 
} 

} 

这是工厂或抽象工厂可以在这里使用的情况。如果是的话,请你举个例子。对象创建工厂模式

回答

0

就你而言,由于你有两个具有两个不同接口的类,工厂在这里确实不适用。您应该使用抽象工厂作为其对象,并将对象初始化委托给其单独的函数。

抽象工厂接口为您的例子放在这里

public Interface IAbstractInterfaceFactory 
{ 

IService1 InitializeService1(); 
IService2 InitializeService2(); 

} 

工厂模式通常用于当你有太多不同的对象初始化实现相同的接口或抽象类。该模式表明有一个工厂方法,并基于对象的类型需要进行初始化,它会创建特定的对象并将其返回。 它有助于在两个方面 1.保留全部初始化代码在一个地方 2.永远不会返回的具体类这使得它更可扩展,可管理的

欲了解更多信息,请参阅该链接 Differences between Abstract Factory Pattern and Factory Method http://en.wikipedia.org/wiki/Abstract_factory_pattern http://www.codeproject.com/Articles/68670/The-Factory-Pattern http://en.wikipedia.org/wiki/Factory_method_pattern

+0

感谢您的回答。真的帮助了我。只是一个相关的问题是,我经历了很多抽象工厂的例子,并观察到几乎所有例子中的AbstractFactory都比ConcreteFactories更多的实现。在我的情况下,我没有看到更多的一个具体的工厂模式,它会是抽象工厂模式的正确实现。 – user2045038

+0

这取决于现在可能是一种情况,但在后期如果您引入新接口,则可以由抽象工厂轻松处理。我想你会有两个具体的工厂现在为IService1和其他Iservice2两个完全独立 –

+0

我仍然无法理解为什么在这种情况下,我需要创建两个具体的工厂。作为一个可以做这样的工作:public class ConcreateServiceFactory:IAbstractInterfaceFactory {public IService1 InitializeService1(){....} public IService2 InitializeService2(){...}}你能解释一下吗? – user2045038