在学习设计模式的过程中,做一些笔记,希望利己利人!
最近在做一个项目,简单介绍写背景:
我们的电子商务网站需要去集成第三方的API,客户登入系统之后,点击‘Track this item’ 链接,从而为客户显示快递当前的状态(避免链接去第三方的网站)。第三方快递公司是UPS和FedEx。
简单介绍工厂模式:
核心工厂类不负责所有产品的创建,而是将各产品的创建交给具体工厂类去做,成为一个抽象工厂的角色。
当我们在准备new一个新的对象的时候,尽量去考虑能否用工厂类实现,虽然这样可能会稍微多花费一点时间,但是对于以后功能的扩展是有好处的。
就拿我们上面的功能来说吧
1、实现一个抽象工厂类:
public interface Factory{
DisplayableInfo processTracking(String carrier);
}
2、实现一个具体工厂类:
public class SampleFactory implements Factory{
public DisplayableInfo processTracking(String carrier){
if("UPS".equals(carrier){
return UPSClient.getTrackingInfo();
}else if("FedEx".equals(carrier){
return FedExClient.getTrackingInfo();
}
}
}
这样,如果需要增加一个申通快递的话,只要增加:
else if("sto".equals(carrier)){
return StoClient.getTrackingInfo();
}
这样可以提高代码的重用,也能使代码整体更加美观。
相关资料:http://java.chinaitlab.com/special/patterns/Index.html