JAVA:将反射技术应用于工厂模式(Factory)和单例模式(Singleton)的简单代码
反射技术大量用于Java设计模式和框架技术,最常见的设计模式就是工厂模式(Factory)和单例模式(Singleton)。
参考URL:
http://blog.csdn.net/xiaohai798/article/details/11640427
用接口来沟通不同程序的开发进度,不必等上游程序写好代码之后,再注入后面流程的程序员。且在实现上,可以用配置文件灵活变更,而不用重编译整个项目。
InterfaceTest.java:
interface InterfaceTest { //基于接口规范
public void getName();
}
Test1.java:
class Test1 implements InterfaceTest { //不同程序员可以实现不同的重写功能
public void getName() {
System.out.println("test1");
}
}
Test2.java:
class Test2 implements InterfaceTest {
public void getName() {
System.out.println("test2");
}
}
Factory.java:
import java.io.FileInputStream;
import java.util.Properties;
class Factory {
private static Properties pro = new Properties();
static {
try { //通过配置文件来实现载入不同的类,实现不同的功能
pro.load(new FileInputStream("file.txt"));
} catch (Exception e) {
e.printStackTrace();
}
}
//保证单例
private static Factory factory = new Factory();
private Factory() {}
public static Factory getFactory() {
return factory;
}
public InterfaceTest getInstance() {
InterfaceTest interfaceTest = null;
try { //反映功能可灵活实例化不同的类,作框架是很灵活自由的啦
String classInfo = pro.getProperty("test");
Class c = Class.forName(classInfo);
Object obj = c.newInstance();
interfaceTest = (InterfaceTest)obj;
} catch (Exception e) {
e.printStackTrace();
}
return interfaceTest;
}
}
FactoryTest.java:
public class FactoryTest {
public static void main(String[] args) {
System.out.println("~~~~~~~~~~~~~~~~");
Factory factory = Factory.getFactory();
System.out.println("!!!!!!!!!!!!!!!!!");
InterfaceTest inter = factory.getInstance();
System.out.println("@@@@@@@@@@@@@@@@@@");
inter.getName();
System.out.println("##################");
}
}

JAVA:将反射技术应用于工厂模式(Factory)和单例模式(Singleton)的简单代码的更多相关文章
- 抽象工厂(Abstract Factory),工厂方法(Factory Method),单例模式(Singleton Pattern)
在谈工厂之前,先阐述一个观点:那就是在实际程序设计中,为了设计灵活的多态代码,代码中尽量不使用new去实例化一个对象,那么不使用new去实例化对象,剩下可用的方法就可以选择使用工厂方法,原型复制等去实 ...
- 【java设计模式】(4)---工厂模式(案例解析)
设计模式之工厂模式 工厂模式分三种:简单工厂模式(也叫静态工厂模式),工厂方法模式(也叫多形性工厂),抽象工厂模式(也叫工具箱)下面会一一举例. 一.概念 1.什么是工厂模式 这种类型的设计模式属于创 ...
- Java设计模式(三) 抽象工厂模式
原创文章,同步发自作者个人博客,转载请注明出处 http://www.jasongj.com/design_pattern/abstract_factory/ 抽象工厂模式解决的问题 上文<工厂 ...
- JAVA中的设计模式二(工厂模式)
工厂模式:主要用来实例化有共同接口的类,工厂模式可以动态决定应该实例化那一个类. 工厂模式主要有: 简单工厂模式,工厂方法,抽象工厂: 简单工厂: 又叫静态工厂,是工厂模式三中状态中结构最为简单的.主 ...
- 设计模式(一)工厂模式Factory(创建型)
设计模式一 工厂模式Factory 在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的.可是在一些情况下, new操作符直接生成对象会带来一些问题. ...
- 设计模式(一)工厂模式Factory(创建类型)
设计模式一 工厂模式Factory 在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的.可是在一些情况下, new操作符直接生成对象会带来一些问题. ...
- 设计模式(一)工厂模式Factory(创建型)(转)
原文链接:http://blog.csdn.net/hguisu/article/details/7505909 设计模式一 工厂模式Factory 在面向对象编程中, 最通常的方法是一个new操作符 ...
- 设计模式 - 工厂模式(factory pattern) 具体解释
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/u012515223/article/details/27081511 工厂模式(factory pa ...
- 23种设计模式--工厂模式-Factory Pattern
一.工厂模式的介绍 工厂模式让我们相到的就是工厂,那么生活中的工厂是生产产品的,在代码中的工厂是生产实例的,在直白一点就是生产实例的类,代码中我们常用new关键字,那么这个new出来的实例 ...
随机推荐
- 修改input:file样式
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
- Enter the path to the kernel header files for the 3.18.0-kali1-686-pae kerne vmware tool
安装VMWare Tools出现提示:Enter the path to the kernel header files for the 3.18.0-kali1-686-pae kerne? 201 ...
- PCB MVC启动顺序与各层之间数据传递对象关系
准备着手基于MVC模式写一套Web端流程指示查看,先着手开发WebAPI打通数据接口,后续可扩展手机端 这里将MVC基本关系整理如下: 一.MVC启动顺序 二.MVC各层之间数据传递对象关系
- Python 38 注册和修改密码
一:注册系统服务 1.添加环境变量:桌面点击我的电脑------>右键属性------>双击高级系统设置------>点击环境变量------>找到在系统变量中的Path后双击 ...
- S - New Year Transportation
Problem description New Year is coming in Line World! In this world, there are n cells numbered by i ...
- 复习HTML+CSS(9)
n CSS简介 CSS:Cascading Style Sheets 层叠样式表 CSS的主要目的:是给HTML标记添加各种各样的表现(格式.样式).比如:文字样式.背景.文本样式.链接样式. 提示 ...
- Multipart/form-data POST文件上传
简单的HTTP POST 大家通过HTTP向服务器发送POST请求提交数据,都是通过form表单提交的,代码如下: <form method="post"action=&qu ...
- scrollWidth clientWidth offsetWidth
scrollWidth:对象的实际内容的宽度,不包边线宽度,会随对象中内容超过可视区后而变大. 实际内容+padding 不包括滚动条 边框client ...
- set statistics profile on实例
set statistics profile on实例 1.SQL语句实例 SQL 代码 复制 SET STATISTICS PROFILE ON GO SELECT COUNT(b.[Sal ...
- 闲着无聊时写的一个调用天气 API 的小 Demo
分为两个部分--调用以及实现,并且由于不想折腾,直接使用了 Console 来调用. 通过firefox直接调用 Main 入口,调用以及输出 调用部分没什么好说的,主要是针对 dynamic 类型的 ...