首页 > 学院 > 开发设计 > 正文

工厂设计模式的两种实现方式

2019-11-08 01:09:16
字体:
来源:转载
供稿:网友

下面将介绍工厂模式的用户输入实现和配置文件实现

一、工厂设计模式通过用户输入实现

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

输出结果:

买苹果


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表