本篇文章主要介绍了" 细说工厂模式之抽象工厂模式(三)",主要涉及到方面的内容,对于软件工程感兴趣的同学可以参考一下:
前面两篇文章分别介绍了简单工厂模式跟一般工厂模式,本篇文章将继续介绍工厂模式中的终极模式-抽象工厂模式细说工厂模式之简单工厂模式(一)细说工厂模式之一般工厂模式...
前面两篇文章分别介绍了简单工厂模式跟一般工厂模式,本篇文章将继续介绍工厂模式中的终极模式-抽象工厂模式
细说工厂模式之简单工厂模式(一)
细说工厂模式之一般工厂模式(二)
在一般工厂中我们可以看到可以用乐视电视工厂来生产乐视电视,小米工厂来生产小米电视。已经很好的实现了开闭原则。但是相比较而言,偌大的工厂就只安装电视生产线,是不是有点大材小用了。咱们看看富士康的工厂可以干吗,既可以为苹果生产手机,也可以为它生产Ipad,没准将来苹果汽车出来了还可以为它代工汽车呢。所以在一个工厂中,咱们可以把一类产品当成一条生产线,以乐视工厂为例,它不光可以生产乐视超级电视,也可以生产乐视超级手机,电视跟手机分别作为其工厂的两条生产线就行了。在咱们的设计模式中,就可以把这一模式很好的借鉴过来。

从上面的实例类图中可以看到,相比一般工厂模式,咱们增加了手机这条生产线。他们还是有他们各自的工厂来生产,也就是,小米的手机跟电视由小米工厂来实现。同理,海信的工厂可以生产海信电视跟海信手机(咱们姑且就认为海信也有手机吧)。其实,将来如果乐视跟小米造汽车的话,我们可以很方便的再添加一个汽车家族,然后还是通过他们家的工厂来生产。咱们接下来来看看他们怎么通过Java来实现哈。
ITV抽象类跟前面两篇文章中是一样的,为了方便阅读,我还是把它贴了上来。
package com.weiyu.factory;
/**
* Created by Sam on 7/14/2016.
*
* 这里是一个抽象类,这里有获取价格以及生产过程这两个抽象方法
*/
public abstract class ITV {
/**
* price方法定义每台电视的售价,具体的售价由其子类来实现
*/
public abstract void price();
/**
* 描述了每台电视的生产过程,具体的生产过程由其子类实现
*/
public abstract void produceProcess();
}
抽象的父类中有price和produceProcess两个方法,分别用来定义每台电视的价格以及电视的生产过程。接着咱们分别来写他的三个子类。
LeTV
package com.weiyu.factory;
/**
* Created by Sam on 7/14/2016.
*/
public class LeTV extends ITV {
@Override
public void price() {
System.out.println("乐视超级电视每台售价5000元");
}
@Override
public void produceProcess() {
System.out.println("乐视电视生产过程由部分国产代工厂以及富士康代工");
}
}
MiTV