设计模式--工厂方法模式(二)

2014-11-24 12:12:40 · 作者: · 浏览: 1
ckage com.loulijun.chapter8;
//场景类,深圳的富士康代工生产各种系统的手机
public class Shenzhen {
public static void main(String args[])
{
//富士康
AbstractFoxconn foxconn = new Foxconn();
//生产iphone
System.out.println("----------生产一部iphone----------");
Phone iphone = foxconn.createPhone(iPhone.class);
iphone.call();
iphone.music();
iphone.via_internet();
//生产AndroidPhone
System.out.println("----------生产一部AndroidPhone,如htc的----------");
Phone androidphone = foxconn.createPhone(AndroidPhone.class);
androidphone.call();
androidphone.music();
androidphone.via_internet();
}
}

运行结果:
----------生产一部iphone----------
用iphone打电话
用iphone听音乐
用iphone上网
----------生产一部AndroidPhone,如htc的----------
用Android手机打电话
用Android手机听音乐
用Android手机上网

这样一个完成的工场方法模式就结束了,当然具体怎么用,怎么扩展就要根据实际项目来操作了
工场方法模式的优缺点可以参考:http://blog.csdn.net/beyondhaven/article/details/6948067
工场方法模式可以有很多中变换,可以是简单工场方法模式,可以是多工场方法模式,可以替换单例模式等等
简单工场方法模式:
不需要抽象工场类,并且createPhone方法时static (静态)的
多工场方法模式:
通过继承基抽象工场细分不同产品所对应的抽象工场,例如生产iphone、AndoridPhone、WindowsPhone所继承的工场分别是三个不同的继承自AbstractFoxconn的不同抽象工场,然后在场景类中根据具体需求选择需要使用的抽象工场

摘自 花郎