美文网首页程序员
反射与factory的结合

反射与factory的结合

作者: guazi1020 | 来源:发表于2018-03-14 20:16 被阅读35次

    1、没有反射时的工厂模式

    设计模式之 工厂模式

    ** 一般实现类 **

    interface fruit{
        public abstract void eat();
    }
    
    class App implements fruit{
        public void eat(){
            System.out.println("Apple");
        }
    }
    
    class Orage implements fruit{
        public void eat(){
            System.out.println("Orange");
        }
    }
    

    工厂模式

    class Factory{
        public static fruit getInstance(String fruitName){
            fruit f=null;
            if("Apple".equals(fruitName)){
                f=new Apple(();
            }
            if("Orage".equals(fruitName)){
                f=new Orange();
            }
            return f;
        } 
    }
    

    使用

    public static main(String[] args){
        fruit f=Factory.getInstance("Orage");
        f.eat();
    }
    

    这样,当我们添加一个子类的时候,就需要修改工厂了。如果我们添加太多的子类,改的就会很多。每增加一个实现子类均需要修改子类和工厂。

    2.利用反射机制创建工厂模式

    factory

    class Factory{
        public static fruit getInstance(String CalssName){
            fruit f=null;
            try{
                f=(fruit)Class.forName(ClassName).newInstance();
            }catch(Exception e){
                e.printStackTrace();
            }
            return f;
        }
    }
    

    使用

    class hello{
        fruit f=Factory.getInstance("Reflect.Apple");
        if(f!=null){
            f.eat();
        }
    }
    

    利用反射通过类名来获取类的实例,当实现发生变化时。只要不更新接口,Factory均不需要替换。

    相关文章

      网友评论

        本文标题:反射与factory的结合

        本文链接:https://www.haomeiwen.com/subject/dnsqqftx.html