名称:工厂

工厂设计模式提供获取某个对象的新实例的一个接口,同时使调用代码避免确定实际实例化基类的步骤。

 

问题与解决方案:

基于工厂设计模式的类有助于减少主代码流中基于条件的复杂性。在整个应用程序中,调用对象的方式众多而且不同。于某个对象创建相关的任何修改都会影响到应用程序的其余部分。假设实例化5个对象中的其中一个,从而完成某种功能性。创建条件语句来判断实例化的对象是一种方法。条件语句可能是复杂的if/else语句或switch/case语句。这种 功能性可以在应用程序中的与多地方使用,但是会导致重复的代码。接下来,如果添加第六个对象或修改现有的5个对象其中一个的名称,那么程序代码的所有实例都需要被修改和在测试。通过提供一个创建上述对象的简单接口,工厂设计模式有助于避免这种令人头痛的问题。无论对象被修改或者添加了其他对象,工厂对象的调用方式仍然是相同的。

显示博客条目就是现实中的一个实例。个性化的博客非常流行,并且具有向使用者提供其内容的多种方式,包括标准的Web浏览器、RSS feed、移动传输以及REST API。实际检索适当博客项的代码流或控制器并不需要关心具体使用的视图,而只是从视图创建工厂中请求新的视图对象。一旦具有该视图对象的实例,文章对象就会被传递至视图内。最后,代码流回调用执行视图对象的渲染对象。在上述整个过程中,由于使用了工厂对象,所以主代码不必处理找出待创建试图对象的问题,而是笼统的调用工厂对象并提供正确的对象进行处理。

UML:

Factory

代码示例: