这是我对工厂模式的初步理解:
就拿网上购物来说吧,首先有一个叫网购的接口,他实行一种促销活动:
public interface OnlineShopping{
public void sale();
}
随后呢,淘宝 和京东呢,为了抢消费者开始了各自的促销活动:
public class Taobao implements OnlineShopping{
@Override
public void sale(){
System.out.println("我们商品一律打5折!");//淘宝说 我们全场打5折!
}
这时候京东也就要想办法了:
public class Jingdong implements OnlineShopping{
@Override
public void sale(){
System.out.println("我们商品全场满300减100,满600减320!");
}
这时候消费者就有不同参考价值了,也就是所谓的工厂:
public class Factory{
public OnlineShopping Taobaobuy(){
return new Taobao();
}
public OnlineShopping Jingdongbuy(){
return new Jingdong();
}}
那现在我们具体要买了喽:
public class FactoryTest{
public static void main(String[ ] args){
Factory f=new Factory();
OnlineShopping s=f.Taobaobuy();
s.sale();//动态绑定
}
}/* Output:
我们商品一律打5折!
*///:~
静态工厂方法模式,将上面的多个工厂方法模式里的方法置为静态的,不需要创建实例,直接调用即可
Factory f=new Factory();
OnlineShopping s=f.Taobaobuy();
等同于
OnlineShopping s=Factory.Taobaobuy();