- 浏览: 119239 次
- 性别:
- 来自: 深圳
文章分类
最新评论
抽象工厂模式中:使用反射来获取XML文件中对应的服务信息,来创建对象,调用相应的服务,实现不同的功能需求。使用抽象工厂是减低程序之间的耦合度(零耦合,抽象耦合,具体耦合)
static PartFactory aPartFactory = null;
public static PartFactory get(String fName)
{
try
{
aPartFactory = (PartFactory)Class.forName(fName).newInstance();
}
catch (Exception e)
{
e.printStackTrace();
aPartFactory = null;
}
return aPartFactory;
}
public static void main(String[] args)
{
PartFactory a = get("com.zzz.xbliuc.ab.BPartFactory");
House house = new House(a.createWindow(), a.createGlass());
System.out.println(house);
}
----------------------------------------
1.定义一个文件(panel.properties)
1=com.rt.factory.Fan
2=com.rt.factory.Yuan
3=com.rt.factory.Gong
2.引用
package com.rt.factory;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
public class Factory {
private static Properties shapes = new Properties();
static{
try {
InputStream in = Factory.class.getResourceAsStream("panel.properties");
shapes.load(in);//将配置文件中的信息加载到shapes对象中
} catch (IOException e) {
throw new RuntimeException(e);
}
}
public static Shape getShape(int type){
try {
//获得与形状类型匹配的形状类名
String className = (String)shapes.get(String.valueOf(type));
//通过fanshe机制构造形状对象
return (Shape)Class.forName(className).newInstance();
} catch (Exception e) {
return null;
}
}
-------------反射示例------------
public static void main(String[] args) throws NumberFormatException,
IOException, ClassNotFoundException, InstantiationException,
IllegalAccessException {
System.out.print("请输入运算类型: ");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String sopl = br.readLine();
// 创建工厂对象
Factoty fy = new Factoty();
Operat a = fy.createOpe(sopl);
System.out.print(":");
BufferedReader n1 = new BufferedReader(new InputStreamReader(System.in));
double d1 = Double.parseDouble(n1.readLine());
System.out.print(":");
BufferedReader n2 = new BufferedReader(new InputStreamReader(System.in));
double d2 = Double.parseDouble(n1.readLine());
a.Operats(d1, d2);
System.out.println("结果 : " + a.getResult(d1, d2));
}
}
public class Factoty {
public Operat createOpe(String name) throws ClassNotFoundException,
InstantiationException, IllegalAccessException {
Operat operat = null;
Class classs = Class.forName(name);// 获取运算类的类对象
Object obj = classs.newInstance();// 获取运算类的实例对象
operat = (Operat) obj;// 强制类型转换
return operat;
}
}
public class Add extends Operat {
@Override
public double getResult(double a, double b) {
return a + b;
}
}
public class Div extends Operat {
@Override
public double getResult(double a, double b) {
return a / b;
}
}
public class Mul extends Operat {
@Override
public double getResult(double a, double b) {
return a * b;
}
}
public class Sub extends Operat {
@Override
public double getResult(double a, double b) {
return a - b;
}
}
public abstract class Operat {
private double a;
private double b;
public void Operats(double a, double b) {
this.a = a;
this.b = b;
}
public abstract double getResult(double a, double b);
}
-----------------------------------------
//反射示例
public class ReflectionTest {
public static void main(String[] args) throws SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException {
getReflection();
}
public static void getReflection() throws SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException{
//自定义一个用户信息类,创建一个对象
UserInfo uInfo = new UserInfo();
Class c = uInfo.getClass();
//1.反射类中所有的公有属性
Field[] files = c.getFields();
for (int i = 0; i < files.length; i++) {
//System.out.println("所有公有属性:"+files[i].getName());
}
System.out.println("");
//2.反射类中所有的属性
Field[] filess = c.getDeclaredFields();
for (int i = 0; i < filess.length; i++) {
//System.out.println("所有的属性:"+filess[i].getName());
}
System.out.println("");
//3.反射类中私有属性
Field f = c.getDeclaredField("uId");//私有属性uId
f.setAccessible(true);
Integer i = (Integer)f.get(uInfo);
//System.out.println("反射类中私有属性的值: "+i+"\n");
//4.反射类中构造方法的参数
Constructor[] conts = c.getConstructors();
for (int j = 0; j < conts.length; j++) {
Class[] ty = conts[j].getParameterTypes();
for (int k = 0; k < ty.length; k++) {
//System.out.println("反射类中构造方法的参数: "+ty[k].getName()+" ");
}
}
System.out.println("");
//5.获取反射类的父类和接口
Class[] interfaces = c.getInterfaces();
for (Class class1 : interfaces) {
//System.out.println("实现的接口:"+class1.getName());
}
Class superClass = c.getSuperclass();
//System.out.println("继承的父类:"+superClass.getName()+"\n");
//6.获取反射类的方法,返回类型,参数名及参数类型
Method[] methods = c.getMethods();
for (Method method : methods) {
//System.out.println("所有的方法: "+"方法名:"+method.getName()+" ,返回类型:"+method.getReturnType().getName());
Class[] pTypes = method.getParameterTypes();
if(pTypes.length <= 0)continue;
//System.out.print("(");
for (int j = 0; j < pTypes.length; j++) {
//System.out.print("方法的参数:"+pTypes[j].getName());
if(pTypes.length > j+1){
//System.out.print(", ");
}
}
//System.out.println(") ");
System.out.println(" ");
}
}
}
static PartFactory aPartFactory = null;
public static PartFactory get(String fName)
{
try
{
aPartFactory = (PartFactory)Class.forName(fName).newInstance();
}
catch (Exception e)
{
e.printStackTrace();
aPartFactory = null;
}
return aPartFactory;
}
public static void main(String[] args)
{
PartFactory a = get("com.zzz.xbliuc.ab.BPartFactory");
House house = new House(a.createWindow(), a.createGlass());
System.out.println(house);
}
----------------------------------------
1.定义一个文件(panel.properties)
1=com.rt.factory.Fan
2=com.rt.factory.Yuan
3=com.rt.factory.Gong
2.引用
package com.rt.factory;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
public class Factory {
private static Properties shapes = new Properties();
static{
try {
InputStream in = Factory.class.getResourceAsStream("panel.properties");
shapes.load(in);//将配置文件中的信息加载到shapes对象中
} catch (IOException e) {
throw new RuntimeException(e);
}
}
public static Shape getShape(int type){
try {
//获得与形状类型匹配的形状类名
String className = (String)shapes.get(String.valueOf(type));
//通过fanshe机制构造形状对象
return (Shape)Class.forName(className).newInstance();
} catch (Exception e) {
return null;
}
}
-------------反射示例------------
public static void main(String[] args) throws NumberFormatException,
IOException, ClassNotFoundException, InstantiationException,
IllegalAccessException {
System.out.print("请输入运算类型: ");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String sopl = br.readLine();
// 创建工厂对象
Factoty fy = new Factoty();
Operat a = fy.createOpe(sopl);
System.out.print(":");
BufferedReader n1 = new BufferedReader(new InputStreamReader(System.in));
double d1 = Double.parseDouble(n1.readLine());
System.out.print(":");
BufferedReader n2 = new BufferedReader(new InputStreamReader(System.in));
double d2 = Double.parseDouble(n1.readLine());
a.Operats(d1, d2);
System.out.println("结果 : " + a.getResult(d1, d2));
}
}
public class Factoty {
public Operat createOpe(String name) throws ClassNotFoundException,
InstantiationException, IllegalAccessException {
Operat operat = null;
Class classs = Class.forName(name);// 获取运算类的类对象
Object obj = classs.newInstance();// 获取运算类的实例对象
operat = (Operat) obj;// 强制类型转换
return operat;
}
}
public class Add extends Operat {
@Override
public double getResult(double a, double b) {
return a + b;
}
}
public class Div extends Operat {
@Override
public double getResult(double a, double b) {
return a / b;
}
}
public class Mul extends Operat {
@Override
public double getResult(double a, double b) {
return a * b;
}
}
public class Sub extends Operat {
@Override
public double getResult(double a, double b) {
return a - b;
}
}
public abstract class Operat {
private double a;
private double b;
public void Operats(double a, double b) {
this.a = a;
this.b = b;
}
public abstract double getResult(double a, double b);
}
-----------------------------------------
//反射示例
public class ReflectionTest {
public static void main(String[] args) throws SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException {
getReflection();
}
public static void getReflection() throws SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException{
//自定义一个用户信息类,创建一个对象
UserInfo uInfo = new UserInfo();
Class c = uInfo.getClass();
//1.反射类中所有的公有属性
Field[] files = c.getFields();
for (int i = 0; i < files.length; i++) {
//System.out.println("所有公有属性:"+files[i].getName());
}
System.out.println("");
//2.反射类中所有的属性
Field[] filess = c.getDeclaredFields();
for (int i = 0; i < filess.length; i++) {
//System.out.println("所有的属性:"+filess[i].getName());
}
System.out.println("");
//3.反射类中私有属性
Field f = c.getDeclaredField("uId");//私有属性uId
f.setAccessible(true);
Integer i = (Integer)f.get(uInfo);
//System.out.println("反射类中私有属性的值: "+i+"\n");
//4.反射类中构造方法的参数
Constructor[] conts = c.getConstructors();
for (int j = 0; j < conts.length; j++) {
Class[] ty = conts[j].getParameterTypes();
for (int k = 0; k < ty.length; k++) {
//System.out.println("反射类中构造方法的参数: "+ty[k].getName()+" ");
}
}
System.out.println("");
//5.获取反射类的父类和接口
Class[] interfaces = c.getInterfaces();
for (Class class1 : interfaces) {
//System.out.println("实现的接口:"+class1.getName());
}
Class superClass = c.getSuperclass();
//System.out.println("继承的父类:"+superClass.getName()+"\n");
//6.获取反射类的方法,返回类型,参数名及参数类型
Method[] methods = c.getMethods();
for (Method method : methods) {
//System.out.println("所有的方法: "+"方法名:"+method.getName()+" ,返回类型:"+method.getReturnType().getName());
Class[] pTypes = method.getParameterTypes();
if(pTypes.length <= 0)continue;
//System.out.print("(");
for (int j = 0; j < pTypes.length; j++) {
//System.out.print("方法的参数:"+pTypes[j].getName());
if(pTypes.length > j+1){
//System.out.print(", ");
}
}
//System.out.println(") ");
System.out.println(" ");
}
}
}
发表评论
文章已被作者锁定,不允许评论。
-
美邦智能
2013-03-30 14:35 0员工管理(工资,假期,) 客户管理 供应商管理 采购模块 ... -
加密解密
2011-12-03 14:59 874String a = "ABCc"; ... -
例_实_建_创_口_接_过_通
2011-08-17 09:50 513public interface IJieKou { ... -
BASE64编码
2011-08-12 16:59 630将对ABC进行BASE64编码: // 1、首先取ABC对 ... -
流_件_文_java
2011-07-20 14:10 670读取 File file = new File(" ... -
作_操_合_集
2011-07-05 15:09 746//Collections List<String> ... -
BigDecimal
2011-07-02 18:42 895double num1 = 2.36; double num2 ... -
件_文_Properties
2011-06-29 19:26 662Properties properties = new Pro ... -
Eclipse平台BPEL开发
2011-06-25 00:15 738Eclipse平台BPEL开发 -
件_文_缩_压
2011-04-11 19:46 656/****************************** ... -
素_元_组_数_除_删_加_增
2011-04-11 19:44 599private static void delIndexEle ... -
作_操_件_文_Java
2011-04-06 20:39 694/****************************** ... -
式_格_字_数
2011-04-06 20:36 675System.out.println(&quo ... -
用_引_软
2011-04-06 20:28 723/****************************** ... -
过_程_载_加_类
2011-04-06 20:27 6361.编写源代码 2.jdk变异成.class文件 3.类加 ... -
序_排_速_快_现_实_JAVA
2011-02-11 17:21 733JAVA实现一个快速排序? 排序的方法有:插入排序(直接插入排 ... -
器_时_定_java
2011-02-11 17:06 595public class aaa { //java定时执行 ... -
举_枚
2011-01-20 12:22 7621.枚举其实都是隐式的继承自java.lang.Enum。有类 ... -
类_e_l_i_F
2011-01-13 23:17 6131.File类提供了管理文件和目录的方法 delete() ... -
制_机_理_处_常_异
2011-01-13 22:29 7341.异常处理:如何表现异常情况?如何控制处理异常流程? 2. ...
相关推荐
《基于具有镭射反光效果的塑料包装盒及其制造方法》这一文档,深入探讨了现代包装设计中的一个重要领域——外包设计,并聚焦于一种创新技术的应用,即镭射反光效果在塑料包装盒上的实现和制造过程。...
在IT行业中,设计装置往往涉及到各种技术和应用领域。在这个特定的案例中,"行业文档-设计装置-一种非金属化激光镭射反光水松纸.zip" 提供了一个关于非金属材料上的激光镭射反光技术的应用。这个压缩包包含了一个名...
在IT行业中,设计外包是一种常见的业务模式,尤其在产品包装设计领域。本文件"行业分类-外包设计-基于具有镭射反光效果的塑料包装盒的说明分析.rar"聚焦于探讨这种外包设计策略,以及其在创建具有镭射反光效果的塑料...
常见的DSM内插算法包括反距离加权插值法(IDW)、Kriging插值法、自然邻近点插值法(Naïve Nearest Neighbor)、样条插值法以及线性和非线性插值法等,每种方法都有其适用场景和优缺点。 2. 传统DOM制作原理: 数字...
QGDW 12176-2021 反窃电监测终端技术规范 本标准规定了反窃电监测终端的技术要求、试验方法和检验规则。该标准适用于反窃电监测终端的设计、制造、安装和使用。 1. 范围 本标准规定了反窃电监测终端的技术要求,...
- **反熔丝型FPGA**:对于基于反熔丝的FPGA而言,空间辐射会导致绝缘介质的击穿,进而影响器件的功能稳定性。主要的辐射效应是介质的绝缘击穿。 - **SRAM型FPGA**:对于基于SRAM的FPGA来说,空间辐射可能导致配置...
2. **中频感应电热弯管机感应加热宽度视中频功率、感应圈宽度、感应圈与管坯的相对位置而定,一般为______mm。** - **正确答案:** B.10~20 - **解析:** 中频感应加热技术在弯管过程中被广泛应用,加热宽度的...
2. 基于参考椭球参数和XYZ坐标,解出球面三角形的反余弦方程,找出EL和EB。 3. 然后通过EL和EB以及P的Z坐标,计算出纬度B和高程H。 4. 最后,通过EL和纬度B,可以计算出经度L。 在提供的压缩包中,`xyz2blh.cpp`和`...
本文将向您介绍如何制作袖珍调频发射机,该发射机非常适合初学者,电路简单易制,造价低廉,输出功率不超过5-8mW,发射范围在房屋区可至100米左右。这个发射机使用3V电源和半波天线,电路设计中最富挑战性的部份就是...
在现代工业自动化领域,对传感器的性能要求愈发严苛。工件表面的反光特性、表面的凸凹不平以及复杂多变的生产背景,都对传感器的检测能力提出了挑战。欧姆龙公司作为全球知名的自动化控制及电子设备制造厂商,其推出...
11. 单选题11:如图所示,小明同学水平拉伸一个弹弓,放手后将弹珠射出,则橡皮筋的弹性势能()_________ 本题考查的是物理学中的能量。 Correct answer is C.在释放过程中转化为弹珠动能。 12. 单选题12:下列...
33. 射出成形(Injection Molding):一种使用射出机来制造模具的成形方式。 34. 温锻(Warm Forging):一种使用温处理来锻造金属的方式。 35. 精密铸造(Investment Casting):一种使用高精度的模具来制造模具...
- **测试对象**:东北段NJD2合同段所有68台风机,型号统一为1120mm-K-4P-30型射流风机。 #### 四、拉拔测试工器具 - **主要工具**: - 拉拔仪(STML-20锚杆拉力计):用于提供拉力并测量拉力值。 - 测试架一套...
基于CMOS工艺平台的反熔丝FPGA(Field-Programmable Gate Array)实现是一项结合了集成电路制造工艺和编程灵活性的技术,其在军事和卫星领域具有广泛的应用前景。FPGA是一种可以通过软件编程来配置硬件逻辑功能的...
牛顿运动定律是这一部分的核心,尤其是牛顿第一定律(惯性定律)、第二定律(加速度定律)和第三定律(作用与反作用定律)。 其次是**能量与功**,这部分内容涉及能量的各种形式,包括动能和势能(重力势能和弹性...
3. **异常电源电压**:因电池反接、电压调节器故障、寒冷天气下的跳线启动等因素导致的超出正常范围的电源电压。 4. **过渡电压**:在设备电路发生变化并达到稳态的过程中产生的电压,或由高压线缆引起的感应电压...
当光线射到镜子表面时,它不会穿过镜子,而是按照一定的规律改变方向,这就是光的反射。这个游戏中,光线碰到镜子后按照反射定律——入射角等于反射角——反射回去,解释了为什么我们能看到墙上的光斑。 2. **平面...
设计装置包括电脑设计系统、激光雕刻机、印刷机等,用于制作模板和批量生产。 三、转移镭射防伪技术 转移镭射防伪技术是现代防伪手段的一种,它通过镭射全息图像技术将独特的防伪图案转移到纸张上。这种技术可以...
双向可逆风机的正反转性能需要保持一致,并且效率不低于75%。TVF风机还应能在限制启动电流的情况下快速达到额定转速。 总的来说,《技术要求-风机.pdf》文件对于城市轨道交通中风机和风阀类设备的技术要求做了详尽...