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

java设计模式之工厂模式【设计模式】

作者头像
简单的程序员
修改2020-05-23 10:53:31
8200
修改2020-05-23 10:53:31
举报
文章被收录于专栏:奕仁专栏奕仁专栏

工厂,就是生产各种物品的一个资源管理器,它在我们生活中是非常常见了,比如电子厂生产手机零件,芯片什么的...

工厂模式: 这里用百度百科的词条来解释: 工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式。著名的Jive论坛 ,就大量使用了工厂模式,工厂模式在Java程序系统可以说是随处可见。因为工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例对象。

在我们java生态中,spring对工厂模式运用的可算是极致了,顶级类BeanFactory是bean的最顶级的工厂类...

在这里,我模拟一下工厂模式: 先说一下工厂模式需要的角色: 机器? 生产的具体物品? ... 是的,是这样的,这里我定义一个机器,它具有生产物品的方法

代码语言:txt
复制
package com.example.demo.core.design;

/**
 * @author ChoviWu 
 * Description :
 */
public interface Machine<T> {

    <T> T create(Object obj);
}

正如我们所想的,面条的机器可以创造面条,芯片的机器可以生产芯片,宝马的机器可以创造宝马...,所以我们这里用泛型来进行表示

所以,我们在这里以面条为例,创建一个面条机器的超类,并实现机器的方法

代码语言:txt
复制
package com.example.demo.core.design;
/**
 * @author ChoviWu 
 * Description :
 */
public abstract class NoodlesMachine implements Machine<Noodle>{

    @Override
    public Noodle create(Object obj) {
        return new Noodle();
    }
}

如果机器要生产兰州拉面,即继承NoodlesMachine即可,并创建对应的兰州拉面类,代码如下:

代码语言:txt
复制
package com.example.demo.core.design;

/**
 * @author ChoviWu 
 * Description :
 */
public class LzNoodlesMachine extends NoodlesMachine {

    @Override
    public Noodle create(Object obj) {
        return new LzNoodles();
    }
}

package com.example.demo.core.design;

/**
 * @author ChoviWu 
 * Description :
 */
public class LzNoodles extends Noodle {
    //兰州 不是劳资
    private String name = "LZ";

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

如果需要做biangbiang面,则可以继续扩展...只需要集成NoodlesMachine类即可。试想,天下的面条种类那么多,工厂模式是非常容易扩展的,实现思路即java的“多态”

这里,就已经实现了一个简单的工厂模式,即简单工厂模式

当你的宝马机器生产宝马的时候,这个时候只需要拓展Machine类即可,这个时候Machine类作为工厂模式的一个标准(即类似于BeanFactory) 生产宝马流程与面条一样:

代码语言:txt
复制
package com.example.demo.core.design;

/**
 * @author ChoviWu 
 * Description :
 */
public abstract class BMWMachine implements Machine<BMW> {

    @Override
    public BMW create(Object obj) {
        return new BMW();
    }
}

测试用例:

public static void main(String[] args) {
        Machine machine = new LzNoodlesMachine();
        System.out.println(machine.create(new Object()));
        machine = new BMWMachine();
        System.out.println(machine.create(new Object())); 
    }

这就是java的工厂模式。

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 这就是java的工厂模式。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档