传统的工厂设计模式每增加一个接口的子类就需要修改工厂类。

由于太过于麻烦可以通过反射来进行处理,因为Class类可以使用newInstance()来实例化对象,使用Class.forName()接受类名称。

引入反射后每当有新子类增加啊,无需修改工厂类代码就就可以很方便的进行接口子类扩容。

package reflectexcrise.reflect;interface Ifruit{void eat();
}class Apple implements Ifruit{public void eat() {System.out.println("吃苹果");}
}class Orange implements Ifruit{public void eat() {System.out.println("吃橘子");}
}
class Watermellon implements Ifruit{public void eat() {System.out.println("吃西瓜");}
}class Factory{private Factory() {}public static Ifruit getInstance(String ClassName) {//在工厂类中,通过反射创建传入的ClassName的实例化对象并返回,并且完成了向上转型Ifruit ifruit=null;try {ifruit=(Ifruit)Class.forName(ClassName).newInstance();} catch (InstantiationException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IllegalAccessException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}return ifruit;}
}public class test {public static void main(String[] args) {Ifruit ifruit=Factory.getInstance("reflectexcrise.reflect.Orange");//调用Ifruit类的eat()方法。ifruit.eat();Ifruit ifruit1=Factory.getInstance("reflectexcrise.reflect.Apple");ifruit1.eat();}}

使用Class.forName()方法,传入的类名称必须包含包名称,即,包名称.类名称。

再调用newInstance()实例化具体类的对象

java编写的简单工厂模式相关推荐

  1. Java设计模式之简单工厂模式实验(软件工程综合实践课程第二周)

    实验目的 1 .理解软件设计的相关理论 : 2 .理解面向对象设计原则: 实验内容 1 .简单工厂模式实验: (1) 参考讲义上的代码,利用简单工厂模式完成计算器应用程序: (2) 画出计算器程序简单 ...

  2. Java中的简单工厂模式(转)

    Java中的简单工厂模式 举两个例子以快速明白Java中的简单工厂模式: 女娲抟土造人 话说:"天地开辟,未有人民,女娲抟土为人."女娲需要用土造出一个个的人,但在女娲造出人之前, ...

  3. Java设计模式之 简单工厂模式和工厂方法实验报告书

    目录 Java设计模式之 1 简单工厂模式和工厂方法实验报告书 1 实验四:简单工厂模式和工厂方法 2 一.实验目的 2 二.实验内容 2 三.实验步骤 2 3.1简单工厂模式:女娲 2 3.2简单工 ...

  4. java设计模式之简单工厂模式

    定义: 由一个工厂对象决定创建出哪一种产品类的实例 类型:属于创建型,但不属于GOF23中设计模式 工厂模式分为三种: 1.简单工厂模式(静态工厂方法模式) 2.工厂方法模式(多态性工厂模式) 3.抽 ...

  5. Java设计模式之简单工厂模式(Simple Factory)

    [Java与模式]简单工厂模式(Simple Factory---吴义) 首先说明,Java与模式一系列的文章均是参考阎宏博士的<Java与模式>一书,加上自身的一些体会的探索,产生如下文 ...

  6. java设计模式:简单工厂模式

    一.什么是简单工厂模式 简单工厂模式属于类的创建型模式,又叫做静态工厂方法模式.通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类. 二.简单工厂模式的角色和职责 1.工厂(C ...

  7. JAVA设计模式笔记(简单工厂模式)

    有一个水果加工工厂,我们的需求是实现加工水果的功能.常见的做法是创建一个水果抽象类,写一个抽象的加工方法,然后创建具体的水果类去继承抽象类,再去实现抽象方法,最后客户端再去新建对象实例. public ...

  8. 智能家居代码构建编写、简单工厂模式、树莓派摄像头视频监控功能实现

    根据上一节内容的代码框架开始编写代码: 首先编写controlDevices.h这个头文件里面的代码,这个是设备工厂每一个结点的结构体类型,而且还要在这个头文件里面进行函数的声明,也就是创建的那些设备 ...

  9. 简单工厂模式(Java、Python)、工厂方法模式(Java、Python)

    目录 一.试画出简单工厂模式的模式结构图,并对模式进行分析 1.1 简单工厂模式结构图: 1.2 简单工厂模式的实现(Java) 1.3 简单工厂模式的优缺点 1.4 简单工厂模式实现(Python) ...

最新文章

  1. GIT SSH连接遇到到的问题
  2. 有漏洞无作为才可怕、可耻!
  3. 12款顶级SIEM工具比较与评级
  4. java 十进制转十六进制、十进制转二进制、二进制转十进制、二进制转十六进制...
  5. centos安装php服务器,在CentOS上安装搭建PHP+Apache+Mysql的服务器环境方法
  6. O/R Mapping再乱弹
  7. 怎么增加一个工位?ApiPost工位有什么用?
  8. 贴一个数据结构老师布置的作业(各种排序) c 语言实现
  9. java圆角矩形_[转]c# 画圆角矩形
  10. 【直观理解】粒子滤波 原理及实现
  11. 软件工程概论第十六周学习进度表
  12. python炫彩界面_炫彩界面库和火花脚本编辑框scintilla制作python IDE框架
  13. 分布式系统及其优缺点
  14. 软件工程课程设计药品信息管理系统*
  15. 达梦8用户和角色管理
  16. flex布局,子元素撑开父元素
  17. 基于FPGA的DHT11数字温湿度传感器测试
  18. 【时间纷飞】死人,死人
  19. 投影仪的对比度多少合适,当贝X3高亮对比度和电视基本一样
  20. WXPY BOT()扫码登陆微信失败 报错KeyError: ‘pass_ticket‘

热门文章

  1. app能不能跳转外部h5_APP内部H5页面跳转 H5唤起APP 怎么做?
  2. 基于 FFMPEG 的视频编码(libavcodec ,致敬雷霄骅)
  3. SVM核函数的简单理解
  4. 如何测试网页登录页面
  5. 达人评测 i3 13100和i3 13100f区别 i313100和i313100f对比
  6. ​有礼有趣, 2019数博会你不可错过的六大亮点
  7. AT24C512地址特性
  8. 路由器的telnet(路由器如何开启telnet)
  9. 网红文字时钟手机版来了!安卓手机和苹果手机都可以使用!
  10. Python Kivy打包成安卓App