反射优化工厂设计模式
程序员文章站
2024-01-20 16:39:22
...
设计模式:
设计模式:是一套被反复使用,多数人知晓的,经过分类编目的,代码设计经验的总结。简单解释:特定问题的固定解决方法。
好处:使用设计模式是为了可重用代码,让代码更容易 被他人理解,保证代码的可靠性,重用性。
工厂设计模式:
工厂模式主要负责对象的创建
开发中有一个非常重要的原则“开闭原则”,对拓展开放,对修改关闭
可通过反射进行工厂模式的设计,完成动态的对象创建
package com.xxx.fs2;
public interface Usb {
void service();
}
package com.xxx.fs2;
public class mouse implements Usb{
@Override
public void service() {
System.out.println("鼠标开始工作。。。");
}
}
package com.xxx.fs2;
public class Fan implements Usb{
@Override
public void service() {
System.out.println("风扇开始工作。。。");
}
}
package com.xxx.fs2;
public class Upan implements Usb{
@Override
public void service() {
System.out.println("u盘开始工作。。。");
}
}
public class UsbFactory {
// public static Usb createUsb(int type){
// Usb usb=null;
// if(type==1){//1鼠标
// usb=new mouse();
// }else if(type==2){//2.风扇
// usb=new Fan();
// }else if(type==3){//3.u盘
// usb=new Upan();
// }
// return usb;
// }
public static Usb createUsb(String type){//类型全名称包名.类名
Usb usb=null;
Class<?> aClass = null;
try {
aClass = Class.forName(type);
usb = (Usb)aClass.newInstance();
} catch ( Exception e) {
System.out.println(e.getMessage());
}
return usb;
}
}
import java.io.FileInputStream;
import java.util.Properties;
import java.util.Scanner;
public class Demo {
public static void main(String[] args) throws Exception{
System.out.println("1.鼠标。。2.风扇。。3。U盘。。");
Scanner input=new Scanner(System.in);
String choice=input.next();
//1=com.xxx.fs2.mouse
//2=com.xxx.fs2.Fan
//3=com.xxx.fs2.Upan
Properties properties=new Properties();
FileInputStream fis = new FileInputStream("day8\\src\\usb.properties");
properties.load(fis);
fis.close();
Usb usb = UsbFactory.createUsb(properties.getProperty(choice));
if(usb!=null){
System.out.println("购买成功");
usb.service();
}else{
System.out.println("购买失败");
}
}
}
1=com.xxx.fs2.mouse
2=com.xxx.fs2.Fan
3=com.xxx.fs2.Upan
4=com.xxx.fs2.mouse2