工厂方法模式

简介:
工厂方法模式是一种创建型设计模式,在任何需要生成复杂对象的地方,都可以使用工厂模式。复杂对象适合使用工厂模式,用
new可以完成创建的对象无需使用工厂模式。
工厂模式的使用方法也很简单,我们可以以Android存储的方式来为例,众所周知,Android中去持久化数据有很多方式,可以
使用SharePreference或者Sqlite等,但这些操作无非就是增删改查,这种情况下我们就可以利用工厂方法模式来解决。

首先在抽象类中去定义操作的方法:

IOHandler.java:

public abstract class IOHandler {
	public abstract void add(String id, String name);

	public abstract void delete(String id);

	public abstract void update(String id, String name);

	public abstract void query(String id, String name);
}

具体的处理类:

public class FileHandler extends IOHandler { //文件处理类
	@Override
	public void add(String id, String name) {
		// 业务处理
	}

	@Override
	public void delete(String id) {
		// 业务处理
	}

	@Override
	public void update(String id, String name) {
		// 业务处理
	}

	@Override
	public void query(String id, String name) {
		// 业务处理
	}

}


public class XMLHandler extends IOHandler { //XMl处理类

	@Override
	public void add(String id, String name) {
		// 业务处理
	}

	@Override
	public void delete(String id) {
		// 业务处理
	}

	@Override
	public void update(String id, String name) {
		// 业务处理
	}

	@Override
	public void query(String id, String name) {
		// 业务处理
	}
	
}
工厂类:

public class Factory {
	//获取IO处理者
	public static <T extends IOHandler> T getIOHandler(Class<T> clz){
		IOHandler handler = null;
		try {
			handler = (IOHandler) Class.forName(clz.getName()).newInstance();
		} catch  (Exception e) {
			e.printStackTrace();
		}
		return (T) handler;
	}
	
}

客户端使用类:

	public static void main(String[] args) {

		int DefaultState = 1;
		int FILEOPERATE = 1;// 文件方式获取
		int XMLOPERATE = 2;// XML方式获取

		if (DefaultState == FILEOPERATE) {
			// 文件方式获取
			IOHandler handler = Factory.getIOHandler(FileHandler.class);//不同的方式从工厂中去获取
			handler.add(id, name);
			handler.delete(id);
			handler.update(id, name);
			handler.query(id, name);
		} else {
			// XML文件方式获取
			IOHandler handler = Factory.getIOHandler(XMLHandler.class);//不同的方式从工厂中去获取
			handler.add(id, name);
			handler.delete(id);
			handler.update(id, name);
			handler.query(id, name);
		}
	}
当然上面只是最简单的工厂方法模式,同样存在着优缺点,缺点就是每次为工厂方法模式添加新的产品时就要编写一个新的
产品类,同时还要引入抽象层,这必然会导致类结构的复杂化,所以选择一种设计模式,必须要考虑在这种情况下是否适合。


参考书籍:
《Android源码设计模式解析与实战》



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值