首页 > 其他分享 >抽象工厂代码示例

抽象工厂代码示例

时间:2023-05-08 15:11:48浏览次数:32  
标签:return 示例 代码 abstract public 抽象 Override extends class

抽象工厂代码示例

为创建一组相关或相互依赖的对象提供一个接口,而且无需指定它们的具体类。

产品族需要扩展的不适合抽象工厂,即在抽象工厂中在加一个createXXX();


public class AbstractFactory {
    public static void main(String[] args) {
        ComputerFactory factory = new Hp();
        System.out.println(factory);
        System.out.println(factory.createCpu());
        System.out.println(factory.createBoard());
        System.out.println(factory.createGpu());
    }
}

abstract class ComputerFactory {

    public abstract Cpu createCpu();

    public abstract Board createBoard();

    public abstract Gpu createGpu();

    @Override
    public String toString() {
        return this.getClass().getSimpleName();
    }
}

class Hp extends ComputerFactory {

    @Override
    public Cpu createCpu() {
        return new Core();
    }

    @Override
    public Board createBoard() {
        return new MSI();
    }

    @Override
    public Gpu createGpu() {
        return new Nvidia();
    }
}

class Mechrevo extends ComputerFactory {

    @Override
    public Cpu createCpu() {
        return new Ryzen();
    }

    @Override
    public Board createBoard() {
        return new ASUS();
    }

    @Override
    public Gpu createGpu() {
        return new ATI();
    }
}

abstract class Cpu {
    @Override
    public String toString() {
        return this.getClass().getSimpleName();
    }
}

abstract class Board {
    @Override
    public String toString() {
        return this.getClass().getSimpleName();
    }
}

abstract class Gpu {
    @Override
    public String toString() {
        return this.getClass().getSimpleName();
    }
}

class Ryzen extends Cpu {
}

class Core extends Cpu {
}

class Nvidia extends Gpu {
}

class ATI extends Gpu {
}

class MSI extends Board {
}

class ASUS extends Board {
}

标签:return,示例,代码,abstract,public,抽象,Override,extends,class
From: https://www.cnblogs.com/annamaple/p/17381828.html

相关文章

  • VScode代码自动补全提示
    VScode代码自动补全提示1.打开设置2.搜索Suggest:SnippetsPreventQuickSuggestions,去掉勾选。3.Ctrl+Shift+P打开setting.json文件,添加以下代码//vscode不自动补全添加代码"editor.suggest.snippetsPreventQuickSuggestions":false,"editor.quickSugg......
  • ChatGPT如何生成可视化图表-示例中国近几年出生人口
    本教程收集于:AIGC从入门到精通教程汇总ChatGPT本身不能直接生成可视化图表,但可以配合其他可视化工具或库方法一:前端可视化开发库Echarts(地址:ApacheECharts)方法二:现有Python库。下面分别介绍:方法一:前端可视化开发库Echarts我们需要用到经典的前端可视化开发库Echarts(......
  • 记录github ssh 下载代码失败解决过程
    windows机器下载airflow代码失败:[email protected]:apache/airflow.gitCloninginto'airflow'...@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@WARNING:REMOTEHOSTIDENTIFICATIONHASCHANGED!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@......
  • 双有源全桥变换器(DAB)电流前馈控制模型,采用C代码实现控制过程,可极大提高变换器动态响
    双有源全桥变换器(DAB)电流前馈控制模型,采用C代码实现控制过程,可极大提高变换器动态响应性能。模型里也包含传统电压环控制,可用于对比。~ID:94180679900002231......
  • MyBatis SQL 批量更新(代码案例)
    写于2021061821:00北京望京一条记录update一次,性能比较差,容易造成阻塞。基于mybatis批量更新,特此记录。@[toc]1.场景当我们在做更新或者是插入操作时,数据为多对多、一一对应的情况例如:编号。名字。状态1tom02jerry03jeck1代码中循环写入、更新这是大多......
  • ArcGIS将自己的Python代码作为工具箱或自定义工具
      本文介绍在ArcMap软件中,通过已有的Python脚本程序,建立新的工具箱并在其中设置自定义工具的方法。  通过本文介绍的操作,我们便可以实现将自己的Python代码封装,并像其他ArcGIS已有工具一样,进行界面化的地理处理操作。  话不多说,我们开始具体操作。首先,在ArcMap中打开“ArcT......
  • 代码工作得很好,别碰它。
    破坏生产很容易!软件开发中有一句老话,我在我的职业生涯中听到过很多次……如果它没坏,就别修它。你可以通过优化旧代码让自己陷入麻烦。但是,当你可以的时候,也应该清理旧代码!你如何决定——保持不变还是修复它呢?我的代码很好用现在Reddit上有一个有趣的GIF在传播……它强......
  • 本地代码提交到远程
    1.创建仓库: 2.git远程操作命令gitremote查看远程仓库(如果没有则看不到): 3.git远程连接,git远程操作命令: ......
  • 特性介绍 | MySQL 测试框架 MTR 系列教程(二):进阶篇 - 内存/线程/代码覆盖率/单元/压力
    作者:卢文双资深数据库内核研发序言:以前对MySQL测试框架MTR的使用,主要集中于SQL正确性验证。近期由于工作需要,深入了解了MTR的方方面面,发现MTR的能力不仅限于此,还支持单元测试、压力测试、代码覆盖率测试、内存错误检测、线程竞争与死锁等功能,因此,本着分享的精神,将其......
  • 如何从develop分支拉取代码,开发页面和合并提交
    我以04官网为例子,在我开发页面的时候,第一步是先切到生产分支,然后不要用vscode自带的操作,改用gitpull拉取最新代码,,此时生产的页面是这样的  我再从develop拉出一个测试分支Jenkins,以及预发布分支release,此时我的需求是这个"开发分支"改成"本地分支",页面文字统一改......