请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

抽象工厂解决产品族?

如何理解抽象工厂解决产品族,工厂解决产品等级?

正在回答 回答被采纳积分+3

2回答

geelylucky 2018-12-24 22:27:17

同学,你好,我是geely老师的助教。

我是这样理解的:

简单工厂:点

工厂模式:线

抽象工厂:面

举一个简单的例子吧:

有一个水果园,里面种了很多水果,有苹果,香蕉,橙子。

根据上面的描述,我们可以归结为以下几个类:

简单工厂:

接口:Fruit         Gardener生产Fruit

实现:Apple------------->Fruit,   Banana------------->Fruit,    Orange------------->Fruit..等等

工厂类:FruitGardener专门生产Fruit

按照以上设计,这个水果的生产过程完全和外界独立,需要哪个水果只需要和工厂类说一声就可以了,但是有一个很显著的问题在于,如果水果园里面需要再种植其他水果的话,是需要修改FruitGardener类中生产水果的代码的,这个时候就需要使用工厂模式来解决这个缺点了。

工厂模式:

接口:Fruit       Gardener生产Fruit

实现:Apple-------实现------>Fruit,   Banana-------实现------>Fruit,    Orange-------实现------>Fruit..等等

工厂类:AppleGardener---实现--->Gardener,      BananaGardener-----实现-->Gardener        OrangeGardener-------实现------>Gardener..等等

按照以上这个套路,即使水果园里面需要种其他水果,也可以通过增加更多的水果园来生产对应的水果(产品等级的概念)。

当工厂模式满足水果园增加新水果的需求后,又接到需求要求再水果园里面同时种植蔬菜,这样的话,它就不仅仅只是生产水果了,而是增加了新的产品类型(产品族的概念)。

抽象工厂:

接口:Fruit       Vegetables          Gardener生产Fruit和Vegetables

实现:Apple------------->Fruit,   Banana------------->Fruit,    Orange------------->Fruit...等等

         Cabbage--------->Vegetables       Broccoli-------->Vegetables      Celery-------->Vegetables..等等

工厂类:GardenerOne-------->Gardener       GardenerTwo-------->Gardener...等等

这个时候的Gardener里面可以同时生产水果和蔬菜,形成产品族的概念。

如果还有其他疑问,请留言告知。

希望能帮助到你。


2 回复 有任何疑惑可以回复我~
  • Geely #1
    例子很恰当
    回复 有任何疑惑可以回复我~ 2019-01-02 14:34:05
Geely 2019-01-02 14:34:47

你好,同学~~课程的例子就可以帮助理解~~具体如何理解问的面有点大,其实我认为alphalucky回答的非常不错,同学可以深入思考一下

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信