前言:
在解说工厂模式之前,先唠一唠。
在莫兰蒂台风第五天后,厦门市民的生活终于基本恢复正常,然而给厦门带来的伤害,仍在延续(35万棵树受灾,厦门行)
上一次说要做的一件事,终于是去做了(9月16日申请了个微信公众号,发了篇文章号召大家救树,链接如下)
http://mp.weixin.qq.com/s?__biz=MzI3NzQ2NTIxMQ==&mid=2247483662&idx=1&sn=322db17aac12e1bdb5d9685f918fb32f&scene=0#wechat_redirect
OK,以下是正题
工厂模式,属于设计模式中的创建类型,见名知意,就如同工厂的产品一样,将共性抽象出来成一个产品父类,各子类继承(或实现)父类,在需要创建一个具体的子类产品时,并不直接通过new的方式,而是构造一个Factory工厂类,由传入的产品要求(参数)去创建具体的产品子类。
开始代码:
今天的例子是以手机为例
所以,主要的java类就是,PhoneFactory类(工厂),Phone类(父类),以及子类(ApplePhone/SamsungPhone/XiaomiPhone);
首先是创建一个工厂类 , 主要的方法是CreatePhone
//手机工厂类
public class PhoneFactory {// 定义手机类型public static final String Phone_Apple = "Apple";public static final String Phone_Samsung = "Sumsang";public static final String Phone_Xiaomi = "Xiaomi";// 根据不同的手机类型做判断,生产不同的手机public static Phone CreatPhone(String phone_type) {switch (phone_type) {case Phone_Apple:return new ApplePhone();case Phone_Samsung:return new SamsungPhone();case Phone_Xiaomi:return new XiaomiPhone();default:System.out.println("我们工厂不生产这种手机型号");return null;}}
}
其次是具有产品共性的,手机父类Phone
可以是抽象类,也可以是一个接口,定义行为就好(这里的行为是,开机、功能、关机)
//抽象父类,默认统一了开机和关机的行为,子类继承这两个行为
public abstract class Phone {public void open() {System.out.println("开机,准备干活");}public abstract void function();public void close() {System.out.println("收工,关机了");}
}
最后是产品子类(这里构造了三类产品),苹果手机、三星手机、小米手机
//苹果手机
public class ApplePhone extends Phone {@Overridepublic void function() {System.out.println("苹果手机,我的特色功能是IPHONE7防水");}
}
//三星手机
public class SamsungPhone extends Phone {@Overridepublic void function() {System.out.println("三星手机,我的特色功能是Note7爆炸");}}
//小米手机
public class XiaomiPhone extends Phone{@Overridepublic void function() {System.out.println("小米手机,我的特色功能是MIUI8手机分身");}}
这样,一个工厂,以及产品线就定义好了。
来测试一下吧
//测试类public class Test {public static void main(String[] args) {Phone phone1 = PhoneFactory.CreatPhone("Apple");Phone phone2 = PhoneFactory.CreatPhone("Samsung");Phone phone3 = PhoneFactory.CreatPhone("Xiaomi");phone1.open();phone1.function();phone1.close();phone2.open();phone2.function();phone2.close();phone3.open();phone3.function();phone3.close();}
}
通过工厂创建了三个phone,传入的参数分别是“Apple”、“Samsung” 、”Xiaomi”,
控制台输出结果如下
开机,准备干活
苹果手机,我的特色功能是IPHONE7防水
收工,关机了开机,准备干活
三星手机,我的特色功能是Note7爆炸
收工,关机了开机,准备干活
小米手机,我的特色功能是MIUI8手机分身
收工,关机了
Ok ,简单工厂模式到此为止。
工厂模式还有抽象工厂模式等,不仅仅局限于一类产品,可以构造出不同的产品系列,小伙伴们可以再去挖掘巩固哦
献上源码
http://download.csdn.net/detail/lebang08/9633882