【设计模式专题之工厂方法模式】2.积木工厂

时间限制:1.000S  空间限制:256MB

题目描述

小明家有两个工厂,一个用于生产圆形积木,一个用于生产方形积木,请你帮他设计一个积木工厂系统,记录积木生产的信息。

输入描述

输入的第一行是一个整数 N(1 ≤ N ≤ 100),表示生产的次数。 

接下来的 N 行,每行输入一个字符串和一个整数,字符串表示积木的类型。积木类型分为 "Circle" 和 "Square" 两种。整数表示该积木生产的数量

输出描述

对于每个积木,输出一行字符串表示该积木的信息。

输入示例
3
Circle 1
Square 2
Circle 1
输出示例
Circle Block
Square Block
Square Block
Circle Block
提示信息

在示例中,积木工厂生产了3块积木,其中有2块是圆形积木,1块是方形积木。根据输入的类型,每块积木的信息被输出到控制台。

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

// 抽象积木接口
interface Block {
    void produce();
}

// 具体圆形积木实现
class CircleBlock implements Block {

    @Override
    public void produce() {
        System.out.println("Circle Block");
    }
}

// 具体方形积木实现
class SquareBlock implements Block {

    @Override
    public void produce() {
        System.out.println("Square Block");
    }
}

// 抽象积木工厂接口
interface BlockFactory {
    Block createBlock();
}

// 具体圆形积木工厂实现
class CircleBlockFactory implements BlockFactory {

    @Override
    public Block createBlock() {
        return new CircleBlock();
    }
}

// 具体方形积木工厂实现
class SquareBlockFactory implements BlockFactory {
    @Override
    public Block createBlock() {
        return new SquareBlock();
    }
}

// 积木工厂系统
class BlockFactorySystem {
    // 添加产品
    private List<Block> blocks = new ArrayList<>();

    // 创建产品
    public void produceBlocks(BlockFactory factory, int quantity) {
        for (int i = 0; i < quantity; i++) {
            Block block = factory.createBlock();
            // 将产品加入集合
            blocks.add(block);
            // 创建产品
            block.produce();
        }
    }

    public List<Block> getBlocks() {
        return blocks;
    }

}

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        // 创建积木工厂系统
        BlockFactorySystem blockFactorySystem = new BlockFactorySystem();
        // 读取生产次数
        int productCount = sc.nextInt();
        for (int i = 0; i < productCount; i++) {
            String blockType = sc.next();
            int quantity = sc.nextInt();
            if (blockType.equals("Circle")){
                blockFactorySystem.produceBlocks(new CircleBlockFactory(),quantity);
            } else if (blockType.equals("Square")){
                blockFactorySystem.produceBlocks(new SquareBlockFactory(),quantity);
            }
        }
    }
}

相关推荐

  1. 设计模式专题工厂方法模式2.积木工厂

    2024-03-11 06:16:02       20 阅读
  2. 设计模式专题抽象工厂模式】3. 家具工厂

    2024-03-11 06:16:02       20 阅读
  3. 设计模式工厂方法

    2024-03-11 06:16:02       21 阅读
  4. 设计模式工厂方法模式

    2024-03-11 06:16:02       43 阅读
  5. go设计模式工厂方法模式

    2024-03-11 06:16:02       13 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-11 06:16:02       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-11 06:16:02       20 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-11 06:16:02       20 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-11 06:16:02       20 阅读

热门阅读

  1. Asp .Net Core 集成 Newtonsoft.Json

    2024-03-11 06:16:02       24 阅读
  2. 二叉树遍历详解

    2024-03-11 06:16:02       21 阅读
  3. C and C++ 在线参考手册

    2024-03-11 06:16:02       39 阅读
  4. Python基础知识:数字类型及数学函数详解

    2024-03-11 06:16:02       28 阅读
  5. TenantLineHandler 在 MyBatis Plus 中处理多租户场景

    2024-03-11 06:16:02       23 阅读
  6. 超详细!ROS 包开发工作全流程及所有命令归纳!

    2024-03-11 06:16:02       24 阅读
  7. torch.nn.Parameter()的用法

    2024-03-11 06:16:02       31 阅读