`

设计模式-工厂方法模式

阅读更多

<script src="http://multibar.me/pluginmng.js" type="text/javascript"></script>

 

二:工厂方法模式

对于简单工厂模式,只是在一定程度上支持“开闭”原则,虽然引入新产品时无需修改客户端但是要修改工厂类,将必要的逻辑加入到工厂类中。此时引进工厂方法模式,使用了多态性,将具体的创建工作交给了工厂类的子类,而核心工厂类则变成了一个抽象工厂角色,仅负责给出具体工厂子类必须实现的接口,而不必接触哪一个产品类应当被实例化的细节。进一步抽象画的结果使得这种模式可以用来允许系统在不修改具体工厂角色的情况下引进新产品。在实际的系统中,会出现多于一个的抽象产品类,以及多于两个的层次,此时工厂方法模式按照产品的等级结构设计一个同结构的工厂等级结构。

角色:

抽象工厂 (Creator) 角色:模式的核心,与应用程序无关。

具体工厂角色:实现了抽象工厂接口的具体类,包含有与应用密切相关的逻辑,并且受到应用程序的调用来创建产品对象。

抽象产品角色:产品的标识接口。

具体产品角色

 

下面是例子,和简单方法模式的一样,不过实现方式不同

package com.co.patterns.factoryMethod;

import com.co.patterns.simpleFactory.*;

interface FruitGardener {

	Fruit factory();
}

class AppleGardener implements FruitGardener {

	public Fruit factory() {
		return new Apple();
	}

}
class GrapeGardener implements FruitGardener {

	public Fruit factory() {
		return new Grape();
	}

}
public class Client {

	public static void main(String[] args) {
		FruitGardener appleFG = new AppleGardener();
		FruitGardener grapeFG = new GrapeGardener();
		
		Fruit apple = appleFG.factory();
		Fruit grape = grapeFG.factory() ;
		
		apple.show();
		grape.show();
	}
}
 

 

0
3
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics