欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

反射优化工厂设计模式

程序员文章站 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