`
javasalatu
  • 浏览: 726086 次
  • 性别: Icon_minigender_2
  • 来自: 北京
博客专栏
96df99eb-e89d-3228-9c8e-967fc745ec52
程序员的自我经营之道
浏览量:7715
文章分类
社区版块
存档分类
最新评论

设计模式之--简单工厂模式

 
阅读更多

角色:用户,工厂,产品.

目的是使得用户将产品的消费和生产分开.在编程中就是将类的创建和使用分开.从而达到责任分离,其实这也是所有创建模式的目的之一.做法是工厂类根据用户的要求(参数)来返回不同的类的实例.

工厂实现:采用参数化的静态方法为用户提供类实例的创建,如下所示:

public static ProductType FactoryMethod(参数)

{

根据参数返回需要类的实例.

}

简单工厂有几种情况:

1.产品只有一种,这种情况下方法没必要带参数.

2.产品有多种,且属于同类型产品,则可以加入抽象产品.加入抽象产品的一个潜在好处是可以让用户可以不关心具体的产品,在设计和实现上可以做到一定程度上的延后联编.

3.产品有多种,且类型各异,则可以考虑采用其它模式或者提供多个工厂方法来实现.但不鼓励采用后者来实现(做事要专业).

4.在实际应用中产品角色,工厂角色以及用户角色都可以根据实际情况合并.(模式变形)

简单工厂模式的理解:

1.如果产品创建的时候需要用户提供指导,则简单工厂模式不适合,如果要适用就会使得工厂方法的参数过于复杂,因此本模式只适合用户不关心产品构造逻辑,只关心使用的情况下(不关心构建,只关心使用).

2.大多数情况下用户还是必须知道产品的具体细节,没有减少对细节的依赖(特殊情况,有抽象产品的情况下,在某些应用中可以减少对具体产品的细节依赖).

3.采用静态方法实现类的创建,好处是可以减少工厂类本身的创建,但缺点是失去了工厂类进行继承扩展的优点.

4.简单工厂模式的好处是实现了责任分离,对用户来讲同时也隐藏了构建产品的细节,而且实现起来比较简单.

5.增加产品的时候,工厂类需要修改,也违背了面向对象的开放封闭原则.

6.只适合产品类比较少的情况,如果产品类太多,会使得静态工厂方法过于庞大.

但现在有一种比较简单的办法,就是采用反射或者泛型来规避静态方法过多而使得工厂类庞大的问题.

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics