课外作业(2)接口+工厂方法 文件上传题 1. 接口作业题

简介: 课外作业(2)接口+工厂方法 文件上传题 1. 接口作业题

创建一个Cycle接口及其Unicycle、Bicycle和Tricycle实现。对每种类型的Cycle都创建相应的工厂,然后编写代码使用这些工厂。工厂产生的对象能够被管理,可以输出当前产生的对象总数。


写了我两个小时

package my;
public abstract class Factory
{
  int num=0;
  abstract int getNum();
  abstract Cycle produce();
  public static Factory createFac(String name){
        try
    {
          // 通过反射机制获取工厂类
          Class c = Class.forName(name);
      Factory factory = (Factory)c.newInstance();
      return factory;
    } catch (Exception e){
      e.printStackTrace();
    }
        return null;
  }
  public static void main(String[] args){
    //直接根据工厂名创建工厂很方便
    Factory unicyclefac=Factory.createFac("my.UnicycleFac");
    Cycle uc1=unicyclefac.produce();
    Cycle uc2=unicyclefac.produce();
    System.out.println(unicyclefac.getNum());
    Factory tricycleFac=Factory.createFac("my.TricycleFac");
    Cycle tc1=tricycleFac.produce();
    System.out.println(tricycleFac.getNum());
  }
}
 class UnicycleFac extends Factory{
  class Unicycle implements Cycle{
    private Unicycle(){}
  }
  @Override
  Cycle produce()
  {
    this.num++;
    return new Unicycle();
  }
  @Override
  int getNum()
  {
    return this.num;
  } 
}
class TricycleFac extends Factory{
  class Tricycle implements Cycle{
    private Tricycle(){}
  }
  @Override
  Cycle produce()
  {
    this.num++;
    return new Tricycle();
  }
  @Override
  int getNum()
  {
    return this.num;
  } 
}
class BicycleFac extends Factory{
  class Bicycle implements Cycle{
    private Bicycle(){}
  }
  @Override
  Cycle produce()
  {
    this.num++;
    return new Bicycle();
  }
  @Override
  int getNum()
  { 
    return this.num;
  } 
}

hnh111

package my;
public interface Cycle
{
  //由于题目并没有涉及Cycle的功能,所以不需要多配置属性和方法
}
相关文章
|
Kubernetes 容器 Perl
【kubernetes】如何找到k8s内部拉取的镜像
【kubernetes】如何找到k8s内部拉取的镜像
898 1
|
数据安全/隐私保护 C++
C++ const 限定符的全面介绍(二)
C++ const 限定符的全面介绍(二)
146 0
|
Java API 开发者
深入理解Java中的异常处理机制
本文探讨了Java编程语言中异常处理的核心概念,包括异常类型、异常捕获与抛出、以及最佳实践。通过分析常见的异常场景和处理策略,旨在帮助开发者更好地理解和运用异常处理机制,提高代码的健壮性和可维护性。文章不仅涵盖了基本的try-catch结构,还深入讨论了自定义异常的创建与使用,以及finally块的重要性和应用。此外,还将介绍一些高级技巧,如多异常捕获和嵌套异常处理,为读者提供全面的技术指导。
278 0
|
存储 JavaScript 前端开发
Cookie 反制策略详解:Cookie加解密原理、Cookie和Session机制、Cookie hook、acw_sc__v2、jsl Cookie调试、重定向Cookie
Cookie 反制策略详解:Cookie加解密原理、Cookie和Session机制、Cookie hook、acw_sc__v2、jsl Cookie调试、重定向Cookie
1141 1
|
Python
Python编程入门:构建你的第一个程序
【8月更文挑战第31天】本文是面向初学者的Python编程指南,将引导读者通过实际案例学习Python基础。我们将一起编写一个简单的程序来展示如何运用变量、控制结构和函数等概念。文章末尾附有完整代码示例供参考和实践。
|
机器学习/深度学习 存储 数据采集
机器学习之PyTorch和Scikit-Learn第5章 通过降维压缩数据Part 1
在第4章 构建优秀的训练数据集 – 数据预处理中,我们学习了使用特征选择技术对数据集降维的不同方法。特征选择以外的另一种降维方法是特征提取。本章中我们会学习两种基本技术,可帮助我们通过将其变换为比原来更低维度的特征子空间总结出数据集中的信息内容。数据压缩是机器学习中非常重要的课题,它有助于我们存储和分析现代技术时代生产和收集的与日俱增的数据。
396 0
机器学习之PyTorch和Scikit-Learn第5章 通过降维压缩数据Part 1
|
弹性计算 关系型数据库 数据库
使用ECS和RDS搭建个人博客
本场景将教你使用一台基础环境为Alibaba Cloud Linux 3的云服务器ECS结合RDS MySQL数据库,来部署WordPress个人博客。
|
SQL Oracle 关系型数据库
Oracle的SYS_GUID() 函数
大家好呀,我是柚子,这篇文章来介绍下Oracle的SYS_GUID() 函数。~~( ̄︶ ̄*))~
653 0
Oracle的SYS_GUID() 函数
|
机器学习/深度学习
基于SVM-支持向量机解决波士顿房价预测回归问题
基于SVM-支持向量机解决波士顿房价预测回归问题
717 0
基于SVM-支持向量机解决波士顿房价预测回归问题
|
Java
Java中lombok @Builder注解使用详解
Java中lombok @Builder注解使用详解
605 0