Abstract Factory(抽象工厂)
抽象工厂,最简单的设计模式,相信大家每天都在使用。
通俗点介绍,先从工厂模式开始。工厂模式,很简单,工厂就生产东西的地方。这里当然是生产对象了。在遥远原始社会,我们需要一个对象,都是new出来的,相当与自己动手做的。
比如 要一条鱼 Fish f1=new Fish();一条鱼就来了,现在有了工厂,鱼就来的容易了,Fish f1=Factory.getFish();看鱼来的容易多了,不用去new了,问Factory要(getFish())。简单吧,相信你以前也用过,只不过不知道叫工厂模式罢了。
好了,接下来解释一下抽象工厂,顾名思义,这个工厂是抽象的,上面我们看到的Factory是一个对象(或者静态类),他是我们编写用来产生鱼的。
public static class Factory
{
public static Fish getFish()
{}
}
随便写下(有语法错误,别怪我哦),抽象工厂中,这个Factory是个抽象类,也不是具体的,Factory我们把他当作一个市场,可能是菜市场FactoryCai、花鸟市场FactoryNiao、也可能是钓鱼场FactoryDiao,反正是不确定的,现在我的需求还是一条鱼,不同的市场给出不同的鱼,按照原始社会做法,应该是
Fish f1=FactoryCai.getFish();//我要一条黄鱼
Fish f2=FactoryNiao.getFish();//我要一条金鱼(鲸鱼,买不起)
Fish f3=FactoryDiao.getFish();//我要一条我钓得起来的鱼
既然FactoryCai,FactoryNiao,FactoryDiao都是继承于Factory,那为什么不写Fish f1=Factory.getFish(x);//到底是返回什么鱼,由传入的参数x来决定,
这就是抽像工厂,简单吧,呵呵。
为什么要写成抽象工厂的模式,我想说明一下:
1.可以少改代码,我一向认为只要改了代码就需要花大量的成本(时间、金钱)进行测试...
2.能隔离要生成的具体对象,也就是松耦合。这样做的好处是,可以自由改动、增加这些具体的类(FactoryCai)。
完整代码不想写了,抽象工厂模式实在太简单了,实在有问题发我email拉。