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() ;
    		}
    	}
    };
    

      

      

  • 相关阅读:
    linux设置docker阿里云镜像
    RapidJSON使用代码片段
    从输入URL到浏览器显示页面发生了什么
    基于vue发布npm插件时 引入插件时 控制台报错“Cannot read property 'toLowerCase' of undefined”
    通过git、gitHub将本地代码上传至gitHub上
    360浏览器长时间不访问或卡顿时容易自动切换到兼容模式下
    Linux 系统目录结构
    Linux 系统启动过程
    The Best Place for Error Messages on Forms
    BEST PRACTICES FOR FORM DESIGN
  • 原文地址:https://www.cnblogs.com/wujixing/p/5430138.html
Copyright © 2011-2022 走看看