Java设计模式之工厂模式(简单工厂、工厂方法、抽象工厂)

/**
 * 简单工厂模式:不直接产生对象,而由一个具体的工厂类统一产生对象。这样不利于增加新的产品。
 * 
 * 工厂方法模式:一个抽象的工厂类可以派生出多个具体的工厂类来负责产生各个产品的对象。(大话设计模式中是用一个具体工厂类,把负责生成某一产品对象封装为具体工厂类的一个函数)
 *          这样在产生对象时相互独立,更符合开放闭合原则。
 * 抽象工厂模式:有多个抽象产品类,每个抽象产品类可以派生多个具体产品类,一个抽象工厂类可以派生出多个具体
 *          工厂类,而每个具体工厂类可以创建多个具体产品类的对象。比较适合产品是分系列或分类的情况。
 * 
 *简单工厂实现例子可参考:http://beijishiqidu.iteye.com/blog/1944127
 *现在把这个例子用工厂方法模式来实现,代码简化了如下。

 */

 

/**
 * 
 *抽象产品类或接口(接口要单独放一个文件中)
 *
 */
abstract class Fruit{
	static final int age=0;
	abstract void plant();
}

/**
 * 具体产品类Apple
 * @author Administrator
 *
 */
class Apple extends Fruit{
	@Override
	void plant() {
		System.out.println("plant apple!");
		
	}
}
/**
 * 具体产品类Grape
 * @author Administrator
 *
 */
class Grape extends Fruit{
	@Override
	void plant() {
		// TODO Auto-generated method stub
		System.out.println("plant Grape!");
	}
}
/**
 * 抽象工厂类
 * @author Administrator
 *
 */
abstract class Factory{
	abstract Fruit creatFruit();
}

/**
 * 产生Apple的具体工厂类
 * @author Administrator
 *
 */
class AppleFactory extends Factory{

	@Override
	Fruit creatFruit() {
		// TODO Auto-generated method stub
		return new Apple();
	}
}
/**
 * 产生Grape的具体工厂类
 * @author Administrator
 *
 */
class GrapeFactory extends Factory{

	@Override
	Fruit creatFruit() {
		// TODO Auto-generated method stub
		return new Grape();
	}
}
/**
 * 测试
 * @author Administrator
 *
 */
public class FactoryModel {
	public static void main(String[] argsStrings){
	Factory appleFactory=new AppleFactory();
	Factory grapeFactory=new GrapeFactory();
	Fruit apple=appleFactory.creatFruit();
	Fruit grape=grapeFactory.creatFruit();
	apple.plant();
	grape.plant();
	}
}

工厂方法模式的的UML类图可以参看:http://haolloyin.blog.51cto.com/1177454/332576
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值