专栏首页每日分享java架构小知识java设计模式-工厂模式

java设计模式-工厂模式

工厂模式种类

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

简单工厂模式

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

简单工厂模式的优点

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

简单工厂模式示例

产品接口

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());
    }
}

输出结果:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • java设计模式-工厂方法模式

    工厂方法模式提供一个用于创建产品的接口,由实现类决定实现哪些产品。工厂方法模式使一个类的实例化延迟到子类,并且只适用于一个产品的等级结构。

    会说话的丶猫
  • 静态方法中注入bean

    @Component public class ScriptExecuteContent {

    会说话的丶猫
  • java设计模式-单例模式

    其定义为:单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的一个类只有一个实例。即一个类...

    会说话的丶猫
  • 聊聊NacosNamingService的selectOneHealthyInstance

    本文主要研究一下NacosNamingService的selectOneHealthyInstance

    codecraft
  • 聊聊NacosNamingService的selectOneHealthyInstance

    本文主要研究一下NacosNamingService的selectOneHealthyInstance

    codecraft
  • Java 进制转换工具类

    DencyCheng
  • 基于Dubbo的http自动测试工具分享

    公司是采用微服务来做模块化的,各个模块之间采用dubbo通信。好处就不用提了,省略了之前模块间复杂的http访问。不过也遇到一些问题: PS: Githu...

    用户1154259
  • flink实战-聊一聊flink中的聚合算子

    今天我们主要聊聊flink中的一个接口org.apache.flink.api.common.functions.AggregateFunction,这个类可以...

    大数据技术与应用实战
  • 猿实战05——手把手教你拥有自己的代码生成器

    哈哈,猿设计终于讲完了,接下来的一段时间,工厂君打算和大家一起来实现我们之间的设计——构建一个自己的电商系统来玩耍。嗯,这个可是一个大工程,代码量很大,业务也比...

    山旮旯的胖子
  • 老瓶装新酒 - C#调用WM手机发送短信(源码)

    一些系统,需要能够发送短信,量很小,平均每日10条。 运营商平台太贵,白名单很严格,小额只能发省内; 各短信平台有各种限制,大事件前后会关闭; 飞信以前可以用W...

    大石头

扫码关注云+社区

领取腾讯云代金券