栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

设计模式之工厂模式

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

设计模式之工厂模式

什么是设计模式
设计模式是经常使用、大多数人知道,有特定目录的代码设计经验。设计模式可以提高代码可维护性,可提升代码运行效率,也能提高系统可靠性。设计模式可以分为三类,分别是创建型、结构型和行为型。以下就工厂模式简要概述。

什么是工厂模式
工厂模式是一种创建型设计模式,它提供了创建对象的最佳方式。使用者不用关心工厂内部如何生产对象,只需要调用即可。

小试牛刀
我们需要创建一个公司工厂,调用者可以直接通过工厂拿到具体的分公司,并执行分公司的具体方法。
调用关系图如下:

1、创建公司接口

public interface CompanyService {

    
    void employUsers();
}

2、创建北京、成都、南充子公司并实现公司接口

@Service
@Slf4j
public class BeijingCompanyServiceImpl implements CompanyService {

    @Override
    public void employUsers() {
        log.error("this is a beijing company employ");
    }
}
@Service
@Slf4j
public class ChengduCompanyServiceImpl implements CompanyService {
    @Override
    public void employUsers() {
        log.error("this is a chengdu company employ");
    }
}
@Service
@Slf4j
public class NanchongCompanyServiceImpl implements CompanyService {
    @Override
    public void employUsers() {
        log.error("this is a nanchong company employ");
    }
}

3、创建工厂类,构造方法传入子公司名称,并提供创建返回子公司方法

public class CompanyFactory {
    
    public static final String BEIJING_COMPANY = "BEIJING_COMPANY";
    public static final String CHENGDU_COMPANY = "CHENGDU_COMPANY";
    public static final String NENCHONG_COMPANY = "NENCHONG_COMPANY";

    
    private String companyName;


    public CompanyFactory(String companyName) {
        this.companyName = companyName;
    }

    
    public CompanyService getCompany(){
        switch (companyName) {
            case BEIJING_COMPANY:
                return new BeijingCompanyServiceImpl();
            case CHENGDU_COMPANY:
                return new ChengduCompanyServiceImpl();
            default:
                return new NanchongCompanyServiceImpl();
        }
    }
}

4、测试通过工厂直接获取子公司并调用具体的子公司招聘方法

@SpringBootTest
public class TestFactoryModel {

    @Test
    public void testFun(){
        //获取工厂并调用招聘方法
        new CompanyFactory(CompanyFactory.BEIJING_COMPANY).getCompany().employUsers();
        new CompanyFactory(CompanyFactory.CHENGDU_COMPANY).getCompany().employUsers();
        new CompanyFactory(CompanyFactory.NENCHONG_COMPANY).getCompany().employUsers();

    }
}

结果如下:
2022-08-08 09:57:10.567 ERROR 56724 — [ main]
p.i.t.s.impl.BeijingCompanyServiceImpl : this is a beijing company employ
2022-08-08 09:57:10.567 ERROR 56724 — [ main]
p.i.t.s.impl.ChengduCompanyServiceImpl : this is a chengdu company employ
2022-08-08 09:57:10.567 ERROR 56724 — [ main]
p.i.t.s.impl.NanchongCompanyServiceImpl : this is a nanchong company employ

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1039862.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号