首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 其他相关 >

从细节中发现有关问题

2013-02-20 
从细节中发现问题在做.net机房收费系统画图阶段,重新认识了一下简单工厂与抽象工厂!从细节处看出它们的不

从细节中发现问题

在做.net机房收费系统画图阶段,重新认识了一下简单工厂与抽象工厂!

从细节处看出它们的不同应用

 

下面写一下简单工厂的工厂类:

    在创建工厂时使用了参数,目的是根据参数来实例化具体类,解决的是一个功能有多种实现,且我需要将不同的实现均实例出来.应用时,我创建的这些实例都可能应用的到.

    以前我的理解是抽象工厂是简单工厂的延续,理所当然的抽象工厂也能解决简单工厂的问题,但是真的用的时候,发现并不是如此,大家看看代码:


抽象工厂:       

    抽象工厂没有使用参数,解决的是一个功能我只需要一种实现方式的问题,虽然我有多种实现的方法,但是在使用时我只需要选择其一.应用时,我只需要将我想创建的实例创建出来即可,不使用的实例可以不创建.它主要解决整个功能有两种不同的实现,在用的过程中只选择其中的一种!

 

   通过这个细节又让我想到当时总结的设计模式之工厂模式,下面我再将三种工厂模式的比较贴过来和大家分享:

       

三种工厂模式对比:

 

简单工厂:简单工厂模式的工厂类一般是使用静态方法,通过接收的参数的不同来返回不同的对象实例。不修改代码的话,是无法扩展的。

工厂方法:工厂方法是针对每一种产品提供一个工厂类。通过不同的工厂实例来创建不同的产品实例。在同一等级结构中,支持增加任意产品。

抽象工厂:抽象工厂是应对产品族概念的。比如说,每个汽车公司可能要同时生产轿车,货车,客车,那么每一个工厂都要有创建轿车,货车和客车的方法。应对产品族概念而生,增加新的产品线很容易,但是无法增加新的产品。


举例说明:

 

  简单工厂的由来:以前都是我自己生产自己的汽车(自产自用),这样的话我和汽车之间就是强耦合,没有我就没办法生产。

   简单工厂:一个汽车公司将各种各样的汽车生产都放在了一个工厂里实现(工厂只负责生产,我只负责使用,降低了我和汽车之间的耦合)

   工厂方法:汽车公司将不同种的汽车在不同的工厂内实现.例如:轿车在生产轿车的工厂生产,汽车在生产汽车的工厂生产等(增加新的产品)。

   抽象工厂:一个汽车公司同时生产汽车,轿车,客车,那么这个汽车公司的每个工厂都要实现生产汽车,轿车,客车的方法。当我要生产各种汽车的不同品牌时,则需要使用抽象工厂模式。也就是产品族的概念。(增加产业线)



热点排行