前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java设计模式-工厂模式

java设计模式-工厂模式

作者头像
会说话的丶猫
发布2020-08-06 14:35:02
5290
发布2020-08-06 14:35:02
举报

工厂模式种类

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

简单工厂模式

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

简单工厂模式的优点

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

简单工厂模式示例

产品接口

代码语言:javascript
复制
public interface Phone {
    //产品类所继承的公共接口,也可以为抽象类
    public String getPhoneName();
}

产品

代码语言:javascript
复制
/**
 *  苹果生产商
 */
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 "我们生产华为手机";
    }
}

工厂

代码语言:javascript
复制
/**
 *  工厂负责生产各种手机,这里的生产可以理解为对象的创建
 */
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;
        }
    }
}

消费者(客户端)

代码语言:javascript
复制
/**
 *  消费者
 */
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());
    }
}

输出结果:

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-02-11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 工厂模式种类
    • 简单工厂模式
      • 简单工厂模式的优点
        • 简单工厂模式示例
          • 产品接口
          • 产品
          • 工厂
          • 消费者(客户端)
          • 输出结果:
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档