zoukankan      html  css  js  c++  java
  • 吴裕雄--天生自然JAVA反射机制学习笔记:工厂设计模式

    package org.lxh.demo15.factorydemo01 ;
    interface Fruit{
        public void eat() ;    // 吃水果
    }
    class Apple implements Fruit{
        public void eat(){            // 覆写eat()方法
            System.out.println("** 吃苹果");
        }
    };
    class Orange implements Fruit{
        public void eat(){
            System.out.println("** 吃橘子") ;
        }
    };
    class Factory{
        public static Fruit getInstance(String className){
            Fruit fruit = null ;
            try{
                fruit = (Fruit)Class.forName(className).newInstance() ;
            }catch(Exception e){
                e.printStackTrace() ;
            }
            return fruit ;
        }
    };
    public class FactoryDemo01{
        public static void main(String args[]){
            Fruit f = Factory.getInstance("org.lxh.demo15.factorydemo01.Apple") ;
            if(f!=null){
                f.eat() ;
            }
        }
    };
    package org.lxh.demo15.factorydemo02 ;
    import java.util.Properties ;
    import java.io.File ;
    import java.io.FileOutputStream ;
    import java.io.FileInputStream ;
    interface Fruit{
        public void eat() ;    // 吃水果
    }
    class Apple implements Fruit{
        public void eat(){            // 覆写eat()方法
            System.out.println("** 吃苹果");
        }
    };
    class Orange implements Fruit{
        public void eat(){
            System.out.println("** 吃橘子") ;
        }
    };
    class Init{
        public static Properties getPro(){
            Properties pro = new Properties() ;
            File f = new File("d:\fruit.properties") ;    // 找到属性文件
            try{
                if(f.exists()){    // 文件存在
                    pro.load(new FileInputStream(f)) ;    // 读取属性
                }else{
                    pro.setProperty("apple","org.lxh.demo15.factorydemo02.Apple") ;
                    pro.setProperty("orange","org.lxh.demo15.factorydemo02.Orange") ;
                    pro.store(new FileOutputStream(f),"FRUIT CLASS") ;
                }
            }catch(Exception e){}
            return pro ;
        }
    };
    class Factory{
        public static Fruit getInstance(String className){
            Fruit fruit = null ;
            try{
                fruit = (Fruit)Class.forName(className).newInstance() ;
            }catch(Exception e){
                e.printStackTrace() ;
            }
            return fruit ;
        }
    };
    public class FactoryDemo02{
        public static void main(String args[]){
            Properties pro = Init.getPro() ;
            Fruit f = Factory.getInstance(pro.getProperty("apple")) ;
            if(f!=null){
                f.eat() ;
            }
        }
    };
  • 相关阅读:
    Angularjs中的ng-class
    AngularJS 的表单验证
    Eclipse更新慢、插件安装慢解决方案zz
    PSD的单位及计算方法[转]
    .NET控件名称缩写一览表 zz
    C#Stopwatch的简单计时zz
    VsVim的快捷键
    MySQL-mysql 8.0.11安装教程
    使用open live writer客户端写博客zz
    WPFToolkit DataGrid 使用介绍zz
  • 原文地址:https://www.cnblogs.com/tszr/p/12416999.html
Copyright © 2011-2022 走看看