下面将介绍工厂模式的用户输入实现和配置文件实现
一、工厂设计模式通过用户输入实现
1、创建水果接口
Fruit接口
public interface Fruit { public void buy();}2、创建实现水果接口的水果类Apple类
public class Apple implements Fruit { @Override public void buy() { System.out.PRintln("买苹果"); }}Pear类public class Pear implements Fruit { @Override public void buy() { System.out.println("买梨子"); }}Orange类public class Orange implements Fruit { @Override public void buy() { System.out.println("买橙子"); }}3、创建水果工厂接口Factory接口
public interface Factory { public Fruit createFruit(String str);}4、创建工厂实现类FactoryImpl类
public class FactoryImpl implements Factory { @Override public Fruit createFruit(String str) { if("apple".equals(str)){ return new Apple(); }else if("pear".equals(str)){ return new Pear(); }else if("orange".equals(str)){ return new Orange(); } return null; }}5、测试public class Test { public static void main(String[] args) { Factory factory = new FactoryImpl(); Fruit fruit1 = factory.createFruit("apple"); Fruit fruit2 = factory.createFruit("pear"); Fruit fruit3 = factory.createFruit("orange"); fruit1.buy(); fruit2.buy(); fruit3.buy(); }}输出结果:买苹果买梨子买橙子二、工厂设计模式通过配置文件实现
说明:本项目中的所有文件均在包factory_design_pattern1中
1、创建水果接口
Fruit接口
public interface Fruit { public void buy();}2、创建实现水果接口的水果类Apple类
public class Apple implements Fruit { @Override public void buy() { System.out.println("买苹果"); }}Pear类public class Pear implements Fruit { @Override public void buy() { System.out.println("买梨子"); }}Orange类public class Orange implements Fruit { @Override public void buy() { System.out.println("买橙子"); }}3、创建配置文件
配置文件名为
FactoryTest.properties
内容为:
ImplClass = factory_design_pattern1.Apple
注意:本实例中的所有文件均在包factory_design_pattern1中
4、创建水果工厂接口Factory接口
public interface Factory { public Fruit createFruit();}5、创建工厂实现类FactoryImpl类
import java.io.IOException;import java.io.InputStream;import java.util.Properties;public class FactoryImpl implements Factory { @Override public Fruit createFruit() { Properties p = new Properties(); InputStream in =null; in = FactoryImpl.class.getResourceAsStream("FactoryTest.properties"); try { p.load(in); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ try { in.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } Fruit fruit = null; try { fruit = (Fruit) Class.forName(p.getProperty("ImplClass")).newInstance(); } catch (InstantiationException | IllegalaccessException | ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } return fruit; }}6、测试public class Test { public static void main(String[] args) { Factory factory = new FactoryImpl(); Fruit fruit = factory.createFruit(); fruit.buy(); }}输出结果:买苹果
新闻热点
疑难解答