首页 > 其他分享 >软件设计之抽象工厂模式

软件设计之抽象工厂模式

时间:2023-10-26 21:34:15浏览次数:34  
标签:info 软件设计 factory 工厂 抽象 Override new public

类图

代码

package test;
import java.util.Scanner;
public class test3 {
    public static void main(String[] args)
    {
        Factorys factory=null;
        ProductA productA=null;
        ProductB productB=null;
        System.out.println("请输入你想要的产品");
        Scanner sc=new Scanner(System.in);
        String type=sc.next();
        switch (type)
        {
            case "A1":factory=new Factory1();productA=factory.createProductA();productA.info();break;
            case "A2":factory=new Factory2();productA=factory.createProductA();productA.info();break;
            case "B1":factory=new Factory1();productB=factory.createProductB();productB.info();break;
            case "B2":factory=new Factory2();productB=factory.createProductB();productB.info();break;
        }
    }

}
interface Factorys{
    public ProductA createProductA();
    public ProductB createProductB();
}
class Factory1 implements Factorys{
    @Override
    public ProductA createProductA()
    {
        return new ProductA1();
    }
    @Override
    public ProductB createProductB()
    {
        return new ProductB1();
    }
}
class Factory2 implements Factorys{
    @Override
    public ProductA createProductA()
    {
        return new ProductA2();
    }
    public ProductB createProductB()
    {
        return new ProductB2();
    }
}
interface ProductA{
    public void info();
}
class ProductA1 implements ProductA{
    @Override
    public void info()
    {
        System.out.println("这是产品A1");
    }
}
class ProductA2 implements ProductA{
    @Override
    public void info()
    {
        System.out.println("这是产品A2");
    }
}
interface ProductB{
    public void info();
}
class ProductB1 implements ProductB{
    @Override
    public void info()
    {
        System.out.println("这是产品B1");
    }
}
class ProductB2 implements ProductB{
    @Override
    public void info()
    {
        System.out.println("这是产品B2");
    }
}

运行结果

抽象工厂模式与工厂模式的区别在于工厂模式只能从一个工厂只能生产一种产品,但是抽象工厂模式可以生产多个产品,简单工厂模式只能由一个工厂生产产品。

只有一个工厂(简单工厂模式)-------------------开了分厂生产另一种产品(工厂方法模式)--------------------一个工厂可以生产多个产品(抽象工厂模式)

标签:info,软件设计,factory,工厂,抽象,Override,new,public
From: https://www.cnblogs.com/cinan/p/17790449.html

相关文章

  • 软件设计师中级复习
     U1-U3用户做什么java_UML:继承/泛化、实现、依赖、关联、聚合、组合的联系与区别(2016-07-12)-scevecn-博客园(cnblogs.com)  包含:聚合:只是聚会而已,还是会分开的组合:实现:接口包含:先把右边的执行,才能执行左边的泛化:之类在父类上重写方法,或者是延伸的对应实......
  • 断言工厂
    言工厂在SpringCloudGateway还有十几个:名称说明示例After是某个时间点后的请求-After=2037-01-20T17:42:47.789-07:00[America/Denver]Before是某个时间点之前的请求-Before=2031-04-13T15:14:47.433+08:00[Asia/Shanghai]Between是某两个时间点之前的请求......
  • 导入失败!检索 COM 类工厂中 CLSID 为 {36D27C48-A1E8-11D3-BA55-00C04F72F325} 的组件
    出现以上错误,需要进行如下配置:一、配置project的DCOM权限1:在服务器上安装office的Project软件.2:在"开始"->"运行"中输入dcomcnfg.exe启动"组件服务"3:依次双击"组件服务"->"计算机"->"我的电脑"->"DCOM配置"4:在"DCOM配置"中找到"Micro......
  • 由一个项目引起智能工厂及数字工厂的灵魂拷问
    智能制造到底是什么?是不是可控成本范围内生产的有序性和连续性?自动化、数字化、信息化和智能化都是手段。但是也应该意识到降本增效的有限性。    介绍一下背景,这是工信部直管的项目,一个新建厂区,规模不小,一直与用户保持着联系,在老厂区调研了2周,前后......
  • 杜撰23中设计模式--抽象工厂模式
    抽象工厂模式。我们需要一个抽象工厂,不同的具体工厂继承抽象工厂。具体的工厂不再生产单一的产品,而是生产一系列的产品,可以具体工厂生产的一系列的产品每一个类进行抽象,对这一系列产品设置好该具体工厂应该产生的类型。举例:水果抽象工厂,有两个具体工厂继承  南方水果工厂,......
  • 学校(抽象dp)
    题目简述选择的学校编号依次为\(p1,p2,p3,...,pk(1≤p1<p2<...<pk≤n)\),若存在\(i(1≤i≤k−3)\)使得$a_{p_i}⊕a_{p_{i+1}}⊕a_{p_{i+2}}⊕a_{p_{i+3}}=s$,则该序列不合法。求在所有\(2^{n−1}\)个可能的序列中问有多少个序列合法。你......
  • 软件设计之C/S结构连接数据库实现登录功能
    界面展示具体代码//DBUtil.javapackageorg.example;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.SQLException;publicclassDBUtil{publicstaticConnectiongetConnection()throwsClassNotFoundException,SQLException......
  • java基础补习继承、抽象和接口
    之前java都是快速入手,很多的基础知识不牢固。没有系统学过。但是现在系统学也有点费时间,我就是碰到那些基础知识不懂或者不太明白时去找对应课程那一小节去学习那些知识。今天就小小学习了下java的继承、抽象还有接口等基础知识。 ......
  • 数控刀具加工厂,公司在职第四党支部开展 “重走长征路,建功新时代”主题党日活动
    成都工具研究所有限公司的前身是成都工具研究所,于1956年创建于北京,是原机械工业部的直属研究所,是我国机械工业的综合性工具科研机构。公司官网:http://www.ctri.com.cn/公司主要从事精密切削工具、精密测量仪器以及表面改性处理技术的技术研究、产品开发和应用服务。2021年6月26日......
  • 大话设计模式之简单工厂模式笔记
    简单工厂模式以实现加、减、乘、除的计算器功能为例初级代码:输入数字交互界面@SuppressWarnings("resource")publicstaticvoidmain(String[]args){System.out.println("**********************************************");System.out.println("......