工厂模式

工厂模式

工厂模式是用于处理复杂种类对象进行构建的,比如我们要生产汽车,自行车 卡车 电动汽车 等各种车型,我们可以直接创建的一个车工厂,直接告诉工厂我需要什么车型,工厂直接给你生产出来就行

优点:简单直接,不需要调用者具体关心调用细节
缺点:会增加项目复杂度,一旦增加种类,工厂也需要变动

样例
生产程序员工厂

  • 1.定义一个接口,由程序员完成的方法
package com.example.demo.study.factory;

/**
 * @Author zhanpeng
 * @Date 2023/5/19 8:15
 */

public interface Coder {

    void code();
}

  • 实现coder这个接口完成自己的方法 比如写 c语言程序员,
package com.example.demo.study.factory;

/**
 * @Author zhanpeng
 * @Date 2023/5/19 8:19
 */

public class CCoder implements Coder{

    @Override
    public void code() {
        System.out.println("\"code C\" = " + "code C");
    }
}

  • java程序员
package com.example.demo.study.factory;

/**
 * @Author zhanpeng
 * @Date 2023/5/19 8:17
 */

public class JavaCoder implements Coder{
    @Override
    public void code() {
        System.out.println("\"code java\" = " + "code java");
    }
}

  • PYTHON程序员
package com.example.demo.study.factory;

/**
 * @Author zhanpeng
 * @Date 2023/5/19 8:18
 */

public class PythonCoder implements Coder{

    @Override
    public void code() {
        System.out.println("\"code python \" = " + "code python ");
    }
}

  • 定义一个工厂类生产进行构造程序员
package com.example.demo.study.factory;

/**
 * @Author zhanpeng
 * @Date 2023/5/19 8:20
 */

public class CoderFactory {

    public static Coder bulidCoder(CoderType coderType) {
        Coder coder = null;
        switch (coderType) {
            case CODER_TYPE_C:
                coder = new CCoder();
                break;
            case CODER_TYPE_JAVA:
                coder = new JavaCoder();
                break;
            case CODER_TYPE_PYTHON:
                coder = new PythonCoder();
                break;
        }
        return coder;
    }
}

定义一个枚举类型来判断是什么需要什么哪种语言的,就返回什么语言的程序员

package com.example.demo.study.factory;

/**
 * @Author zhanpeng
 * @Date 2023/5/19 8:20
 */

public class CoderFactory {

    public static Coder bulidCoder(CoderType coderType) {
        Coder coder = null;
        switch (coderType) {
            case CODER_TYPE_C:
                coder = new CCoder();
                break;
            case CODER_TYPE_JAVA:
                coder = new JavaCoder();
                break;
            case CODER_TYPE_PYTHON:
                coder = new PythonCoder();
                break;
        }
        return coder;
    }
}

  • 测试一下
package com.example.demo.study.factory;

import org.junit.Test;

/**
 * @Author zhanpeng
 * @Date 2023/5/19 8:27
 */

public class FactoryTest {


    @Test
    public void testFactory1(){
        Coder coder = CoderFactory.bulidCoder(CoderType.CODER_TYPE_JAVA);
        coder.code();
    }
}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值