码迷,mamicode.com
首页 > 编程语言 > 详细

java设计模式-工厂模式

时间:2019-02-12 00:14:59      阅读:170      评论:0      收藏:0      [点我收藏+]

标签:技术   .com   抽象工厂模式   static   str   hone   设计   bsp   手机   

工厂模式种类

工厂模式可以分为三类:简单工厂模式,工厂方法模式以及抽象工厂模式。

简单工厂模式

简单工厂模式又称为静态工厂方法模式,为何称为静态工厂方法模式呢?是因为该模式主要由一个工厂类的静态方法来提供各种产品。

简单工厂模式的优点

这里假设有三个角色:消费者,生产者和产品。通过简单工厂模式消费者并不需要关心产品是如何生产出来的,也不需要关心产品制造的具体流程,只需要直接去生产者那里直接购买便可。这在一定程度上实现了生产者和产品之间的解耦,每个角色之间的分工变得更加明确。

简单工厂模式示例

 产品接口

public interface Phone {
    //产品类所继承的公共接口,也可以为抽象类
    public String getPhoneName();
}

 

产品

/**
 *  苹果生产商
 */
public class IPhone implements Phone {
    @Override
    public String getPhoneName() {
        return "我们生产苹果手机";
    }
}


/**
 *  vivo生产商
 */
public class VivoPhone implements Phone {
    @Override
    public String getPhoneName() {
        return "我们生产vivo手机";
    }
}

/**
 *  华为生产商
 */
public class HuaWeiPhone implements Phone {
    @Override
    public String getPhoneName() {
        return "我们生产华为手机";
    }
}

 

工厂

/**
 *  工厂负责生产各种手机,这里的生产可以理解为对象的创建
 */
public class Factory {

    //苹果手机
    private static final String APPLE = "apple";

    //vivo手机
    private static final String VIVO = "vivo";

    //华为手机
    private static final String HUAWEI = "huawei";

    //根据用户的选择来提供手机
    public static Phone create(String name)
    {
        switch (name)
        {
            case APPLE:
                return new IPhone();
            case VIVO:
                return  new VivoPhone();
            case HUAWEI:
                return new HuaWeiPhone();
            default:
                return null;
        }
    }
}

 

消费者(客户端)

/**
 *  消费者
 */
public class Customer {
    public static void main(String[] args)
    {
        //用户买个苹果手机
        Phone phone = Factory.create("apple");
        System.out.println(phone.getPhoneName());

        //用户买个华为手机
        Phone phone2 = Factory.create("huawei");
        System.out.println(phone2.getPhoneName());
    }
}

输出结果:

 技术图片

 

java设计模式-工厂模式

标签:技术   .com   抽象工厂模式   static   str   hone   设计   bsp   手机   

原文地址:https://www.cnblogs.com/talkingcat/p/10361197.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!