工厂设计模式

来源:互联网 发布:瑞士三角巧克力知乎 编辑:程序博客网 时间:2024/05/20 00:11

工厂设计模式:

package com.neu ;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("com.neu.Apple") ;if(f!=null){f.eat() ;}}};
运行结果:

** 吃苹果

读取属性文件的工厂设计模式:

fruit.properties属性文件中的内容:

apple=com.neu.Appleorange=com.neu.Orange
FactoryDemo02类:

package com.neu ;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","com.neu.Apple") ;pro.setProperty("orange","com.neu.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() ;}}};
运行结果:

** 吃苹果


0 0
原创粉丝点击