java工厂类理解

java工厂类理解

工厂模式:就是在子类和接口之间加了一个过渡,这个过渡就是工厂类,在工厂类的方法中输入入参,入参就是你想要实例化的类名,这样即可获得相应类实例化.这样如果以后还要扩充实现此接口的子类,直接修改工厂类就可标记得到相应的类实例,增加了程序的灵活性.

动物接口

public interface Animal {
	public void say();

}

实现动物接口的dog类

public class Dog implements Animal{
	public void say(){
		System.out.println("dog");
	}

}

工厂类

public class JavaFactory {
	public  static Object getInstance(Class clas){
		Object obj=null;
		try {
			Class cla=Class.forName(clas.getName());
			 try {
				obj=cla.newInstance();
			} catch (InstantiationException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IllegalAccessException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return obj;
	}

}

测试类

public class Test {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Animal animal=(Animal) JavaFactory.getInstance(Dog.class);
		animal.say();
	}

}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/106356.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • superagent使用代理

    superagent使用代理superagent是一个轻量级的Ajaxapi,既可以在服务端的nodejs中使用,也可以在客户端的javascript中使用,其api相对简单易上手。大家在工作中应该经常会使用到,但是superagent通过代理去调用服务,应该很少使用,下面就给大家具体介绍下如何使用:由于superagent本身不支持代理的方式进行http请求,因此需要借助第三方的模块,本文介绍的是superagent-proxy。安装$npminstallsuperagent-proxy示例varr

    2025年8月3日
    5
  • LM算法初识_lm算法效果

    LM算法初识_lm算法效果  由于工作内容接触到点云标定,需要用到最小二乘法,所以特意花了点时间研究LM算法,但是由于大学的高等数学忘得差不多了,所以本文从最基本的一些数学概念开始;信赖域法  在最优化算法中,都是要求一个函数的极小值,每一步迭代中,都要求目标函数值是下降的,而信赖域法,顾名思义,就是从初始点开始,先假设一个可以信赖的最大位移,然后在以当前点为中心,以为半径的区域内,通过寻找目标函数的一个近似函数(二次的)的最优点,来求解得到真正的位移。在得到了位移之后,再计算目标函数值,如果其使目标函数值的下降满足了一定条件,

    2022年10月1日
    2
  • python fillna函数_python中dropna函数

    python fillna函数_python中dropna函数我正在尝试在datetime64[ns]类型的列上运行fillna.当我运行类似的东西:DF[‘日期’].fillna(日期时间(“2000-01-01”))我明白了:TypeError:需要一个整数有什么方法吗?这应该在0.12和0.13(刚刚发布)中工作.@DSM指出日期时间的构造如下:datetime.datetime(2012,1,1)所以错误是由于未能构建您传递给fillna的值…

    2022年8月12日
    7
  • idea社区版下载安装教程_idea专业版安装教程

    idea社区版下载安装教程_idea专业版安装教程本人一直使用的是Eclipse作为开发工具的,不过现在IDEA非常的受推崇,所以决定上手试一试。网上有很多旗舰版的文章,我没有仔细看,我这次是决定使用社区版的IDEA,虽然功能会少一些,作为练手用完全够用了。IDEA官网地址:https://www.jetbrains.com/idea/download/#section=windows下载社区版后,点击安装,就进行傻瓜式的安装了。以上…

    2022年9月22日
    3
  • python处理xps文件_xps/pdf/png/json转换

    python处理xps文件_xps/pdf/png/json转换问题11.如何移植最新版本的pdf.js到pdf2json库中来2.如何实现坐标换算参考源码x/px=PDFUnit.toPixelX(x+0.25)y/px=PDFUnit.toPixelY(x+0.75)w/px=PDFUnit.toFixedFloat(maxWidth),Theunitforallwidth,height,length,etc,isin”…

    2022年5月4日
    51
  • setContentView剖解

    setContentView剖解setContentView剖析1、setContentView的作用是将View加载到根view之上,这样当显示view时,先显示根view,然后在显示子view,以此类推,最终将所有view显示出来。2、setContentView必须要放在findviewbyid之前,因为view在加载之前是无法引用的。3、setContentView最本质的作用是为要显示的

    2022年6月26日
    26

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号