简单工厂模式——2016手机也疯狂

前言:
在解说工厂模式之前,先唠一唠。
在莫兰蒂台风第五天后,厦门市民的生活终于基本恢复正常,然而给厦门带来的伤害,仍在延续(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 {

    @Override
    public void function() {
        System.out.println("苹果手机,我的特色功能是IPHONE7防水");
    }
}
//三星手机
public class SamsungPhone extends Phone {

    @Override
    public void function() {
        System.out.println("三星手机,我的特色功能是Note7爆炸");
    }

}
//小米手机
public class XiaomiPhone extends Phone{

    @Override
    public 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值