泛型-使用泛型结合工厂方法实现单例模式,以支持类型自定义

简介: 泛型-使用泛型结合工厂方法实现单例模式,以支持类型自定义


泛型-使用泛型结合工厂方法实现单例模式,以支持类型自定义

package my;
public class Factory<T>
{
   static final Factory<Unicycle> t1=new Factory<Unicycle>();
   static final Factory<Tricycle> t2=new Factory<Tricycle>();
   static final Factory<Bicycle> t3=new Factory<Bicycle>();
  private Cycle createCyc(){
    if(this.equals(t1)){
      System.out.println("创建了一个Unicycle");
      return new Unicycle();
    }
    if(this.equals(t2)){
      System.out.println("创建了一个Tricycle");
      return new Tricycle();
    }
    if(this.equals(t3)){
      System.out.println("创建了一个Bicycle");
      return new Bicycle();
    }
    return null;
  }
  public static  Factory<?> create(String FacName){
    if(FacName.equals("Unicycle"))return t1;
    if(FacName.equals("Tricycle"))return t2;
    if(FacName.equals("Bicycle"))return t3;
    return null;
  }
  private Factory(){  
  }
  public Factory(String FacName){
  }
  public static void main(String[] args){
    Factory<?> UniFac1=Factory.create("Unicycle");
    UniFac1.createCyc();
    Factory<?> TriFac1=Factory.create("Tricycle");
    TriFac1.createCyc();
    Factory<?> UniFac2=Factory.create("Unicycle");
    UniFac2.createCyc();
  }
}
class Unicycle implements Cycle{
   Unicycle(){}
}
class Tricycle implements Cycle{
   Tricycle(){}
}
class Bicycle implements Cycle{
   Bicycle(){}
}
package my;
public interface Cycle
{
  //由于题目并没有涉及Cycle的功能,所以不需要多配置属性和方法
}
相关文章
|
开发者 iOS开发
如何使用 Instruments 工具来分析应用的性能?
如何使用 Instruments 工具来分析应用的性能?
606 2
|
Java
初始化ArrayList的方式
初始化ArrayList的方式
303 4
|
存储 缓存 前端开发
理清 nginx 中的 location 配置
理清 nginx 中的 location 配置
|
Linux 数据安全/隐私保护 网络安全
Centos7环境下搭建SVN服务器
SVN是subversion的缩写,是一个开放源代码的版本控制系统,通过采用分支管理系统的高效管理,简而言之就是用于多个人共同开发同一个项目,实现共享资源,实现最终集中式的管理。
585 0
阿里云国际版提交工单后需要多久才能解决问题
阿里云国际版提交工单后需要多久才能解决问题
|
机器学习/深度学习 数据采集 算法
机器学习:升维(Polynomial Regression)
该文介绍了升维的概念,指出在低维度中难以对混合数据进行有效分类,而升维是通过算法将数据投射到高维空间以改善模型性能。文章以多项式回归为例,说明了如何通过升维将非线性关系转换为线性关系,并提供了Python代码示例展示了如何使用`PolynomialFeatures`进行升维。代码结果显示,随着维度增加,模型从欠拟合逐渐过渡到过拟合。
1652 0
|
数据挖掘 索引 Python
Pandas read_csv 参数详解
Pandas的`read_csv`函数用于从CSV文件中加载数据,转换为DataFrame。本文详述了其常用参数,如`filepath_or_buffer`(接受路径、URL或文件对象)、`sep`/`delimiter`(字段分隔符,默认为逗号)、`header`(列名行号,默认0)、`names`(自定义列名)、`index_col`(设定索引列)、`usecols`(选择读取的列)、`skiprows`/`nrows`/`skipfooter`(跳过或只读指定行数)和`parse_dates`(解析日期列)。理解这些参数有助于高效处理CSV数据。
|
存储 关系型数据库 MySQL
PolarDB-X V2.3 集中式和分布式一体化开源发布
本文主要介绍PolarDB-X V2.3 集中式和分布式一体化开源。
|
编解码 网络性能优化 芯片
如何用51单片机实现pwm调光+呼吸灯(超详细+源码)
如何用51单片机实现pwm调光+呼吸灯(超详细+源码)
2443 0
如何用51单片机实现pwm调光+呼吸灯(超详细+源码)
|
SQL 缓存 负载均衡
项目高并发问题解决方案合集
这道题是比较典型的题吧,也是我第一个公司入职的时候,面试官问我的,当时我回答只能说是星星之火,还不能燎原那种,差点被面试官给浇灭。
382 0

热门文章

最新文章