首页 > 其他分享 >24种设计模式--工厂模式(Factory)创建型

24种设计模式--工厂模式(Factory)创建型

时间:2023-01-31 00:12:41浏览次数:55  
标签:24 makeCall Phone -- dahan simlpefactory 设计模式 com public

目录

1.简单工厂模式 simpleFactory

概述

工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。

何时使用:我们明确地计划不同条件下创建不同实例时。

接口类

package com.dahan.simlpefactory;

/**
 * 大汉软件
 */
public interface Phone {
    void makeCall();
}

实现类

package com.dahan.simlpefactory.impl;

import com.dahan.simlpefactory.Phone;

/**
 * 大汉软件
 */
public class HuaweiPhoneImpl implements Phone {
    @Override
    public void makeCall() {
        System.out.println("用华为手机打电话");
    }
}
package com.dahan.simlpefactory.impl;

import com.dahan.simlpefactory.Phone;

/**
 * 大汉软件
 */
public class MiPhoneImpl implements Phone {
    @Override
    public void makeCall() {
        System.out.println("用小米手机打电话");
    }
}

简单工场类

package com.dahan.simlpefactory;

import com.dahan.simlpefactory.impl.HuaweiPhoneImpl;
import com.dahan.simlpefactory.impl.MiPhoneImpl;

/**
 * 大汉软件
 */
public class SimplePhoneFactory {
    public Phone getBean(String phoneType) {
        Phone phone;
        if ("mi".equals(phoneType)) {
            phone = new MiPhoneImpl();
        } else if ("huawei".equals(phoneType)) {
            phone = new HuaweiPhoneImpl();
        } else {
            return null;
        }
        return phone;
    }
}

测试类

package com.dahan.simlpefactory;

/**
 * 大汉软件
 */
public class Test {
    public static void main(String[] args) {
        SimplePhoneFactory factory = new SimplePhoneFactory();
        Phone mi = factory.getBean("mi");
        mi.makeCall();

        Phone huawei = factory.getBean("huawei");
        huawei.makeCall();
    }
}
测试结果:

用小米手机打电话
用华为手机打电话

参考链接

设计模式-菜鸟教程

标签:24,makeCall,Phone,--,dahan,simlpefactory,设计模式,com,public
From: https://www.cnblogs.com/csh520mjy/p/17077593.html

相关文章

  • 05-数制与码制的习题
    数制与码制习题BCD码相关问题BCD码永远是和十进制建立关系的处理BCD码的第一步,总是要将其转变为十进制数2421码转变为余三码:2421-->10进制-->8421码-->(加三)余三码......
  • 算法:线段树&&Luogu p3372题解
    前言不愧是线段树,竟然卡我这么久,还是那句话:十年OI一场空,不开longlong见祖宗#1什么是线段树?线段树长什么样?通俗一点,线段树就是线段,树。实际上,线段树是一棵完全......
  • 一篇文章带你了解设计模式——创建者模式
    一篇文章带你了解设计模式——创建者模式在之前的文章中我们已经学习了设计模式的基本原则和基本分类下面我们来介绍第一种设计模式,创建型模式的主要关注点是怎样创建对......
  • mysql行列互转
    1.构造常量表SELECT'优'aslabel,'A'as`value`UNIONALLSELECT'中'aslabel,'B'as`value`UNIONALLSELECT'良'aslabel,'C'as`value`UNIONALLSELEC......
  • TypeDB Forces 2023 C. Remove the Bracket
    链接:https://codeforces.com/contest/1787/problem/C题意:给定数组a数n和s,再由\(x_i+y_i=a_i\)且\((x_i-s)\cdot(y_i-s)\geq0\)一个式子令其值最小$F=a_1\cdotx_......
  • How to use the /userva switch with the /3GB switch to tune the User-mode space t
    Howtousethe/uservaswitchwiththe/3GBswitchtotunetheUser-modespacetoavaluebetween2GBand3GB(316739)Theinformationinthisarticl......
  • 微信小程序分包
    当我们程序太大的时候,打开小程序就会比较慢,此处就需要用到分包加载,按照模块划分不同的包,让用户在需要的时候才加载对用的模块,也就是用户在进入某些页面的时候才下载该页面......
  • 【ABAQUS 二次开发笔记】输出单元刚度矩阵
    目录相关的关键字必须的参数可选参数使用关键字输出到mtx文件输出到dat文件参考资料相关的关键字*ELEMENTMATRIXOUTPUT此keyword用于将元素刚度矩阵和质量矩阵(如果可......
  • TypeDB Forces 2023 E. The Harmonization of XOR
    链接:https://codeforces.com/contest/1787/problem/E题意:给定n,有一个数组a,满足其所有元素均为1~n,给定k,问能否将数组拆为k个,其每一组的xor为x。我们发现任意三个xor为k的......
  • 14--git常用操作 | 青训营笔记
    这是我参与「第五届青训营」伴学笔记创作活动的第14天学习资料git使用简易指南(bootcss.com)Git-Book(git-scm.com)公司使用Gitlab管理项目实践指南git思维导......