关于抽象工厂的问题

04-02-17 gentoo
抽象工厂也就是创建很多产品时候用。

但是在这个抽象工厂类中也就是是定义了每个产品创建的方法返回的接口,比如

FactoryDB{

public A getDB();

public B getDB2();

...

}

我在想,每个具体产品类里继承他,跟不继承他,有什么区别,不继承的时候每个产品的工厂里还是返回A或B这类接口,继承了还是返回这个,我实在想不出抽象工厂好在哪里,请指点。

    

banq
2004-02-17 22:10
>不继承的时候每个产品的工厂里还是返回A或B这类接口

不继承A或B如何返回接口A或B?

gentoo
2004-02-19 13:40
比如我有个车子的工厂,和一个车的接口,一个bigcar,smallcar类实现了这个接口,

CarFactory{

public ICar getClass(String str)

{

if(str.equals("big"))

return new bigcar();

else if(str.equals("small"))

{

return new smallcar();

}

else ....

}

}

这样没有抽象工厂也一样的啊,如果还有其他产品,如果水果,。。。那么我也像上面一样建立工厂,接口一样能实现,也没有用到抽象工厂啊。那有了抽象工厂的好处又是什么呢。

gentoo
2004-02-19 13:57
其实我的意思就是,我在抽象工厂里定义了两个创建方法,一个方法返回类型是ICar,一个是IComputer,如

public Icar createCar();

public IComputer createComputer();

那么我如果还想加入其他产品的话,我不仅要改变这类,还要改变其他继承这类的工厂。等等。。不是很麻烦。。??

banq
2004-02-29 10:01
"还想加入其他产品?"

你是想增加新的接口吗?每个模式都有其限制前提,抽象工厂也是。

如果你的接口设计具有一定抽象性,增加其它产品只是增加子类而已。

猜你喜欢
2Go 1 2 下一页