zoukankan      html  css  js  c++  java
  • JAVA基础--工厂模式

    interface Fruit{	// 定义一个水果接口
    	public void eat() ;	// 吃水果
    }
    class Apple implements Fruit{
    	public void eat(){
    		System.out.println("** 吃苹果。") ;
    	}
    };
    class Orange implements Fruit{
    	public void eat(){
    		System.out.println("** 吃橘子。") ;
    	}
    };
    class Factory{	// 定义工厂类
    	public static Fruit getInstance(String className){
    		Fruit f = null ;
    		if("apple".equals(className)){	// 判断是否要的是苹果的子类
    			f = new Apple() ;
    		}
    		if("orange".equals(className)){	// 判断是否要的是橘子的子类
    			f = new Orange() ;
    		}
    		return f ;
    	}
    };
    public class InterfaceCaseDemo05{
    	public static void main(String args[]){
    		Fruit f = Factory.getInstance(args[0]) ;	// 实例化接口
    		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() ;
    		}
    	}
    };
    

      

      

  • 相关阅读:
    WinCMD color命令
    WinCMD if命令(批处理Dos 大于、小于、等于)
    WinCMD 常用命令
    AIFramework基本概念整理
    AICompiler动态shape编译框架
    深度学习编译与优化Deep Learning Compiler and Optimizer
    NNVM Compiler,AI框架的开放式编译器
    Tengine AIFramework框架
    Tvm一些基本技术
    北汽蓝谷和北汽新能源
  • 原文地址:https://www.cnblogs.com/wujixing/p/5430138.html
Copyright © 2011-2022 走看看