为了实现更好的灵活性
应改面向接口编程。因此,应该面向接口提供工场。
比如,Cat, Dog, Mouse,都是4条腿会跑的动物。
因此,我们建立一个接口叫做FourLegs
interface FourLegs {
void run();
}
我们可能需要一个实验使用一个会跑得动物
比如,我们要一个发电机,但是不管什么
只要会跑得动物都可以来发电
class ElectricProducer {
void produceBy(FourLegs fourLegs){
...dosomething..
fourLegs.run();
}
}
我们需要一个工场来管理动物的创建,因为有可能增加很多动物。
OCP原则,就是说,对类的扩展要open类,对类的修改要close
class FourLegFactory{
FourLegFactory factory() {
return ...
}
}
这里面factory的实现可以是通过配置文件,也可以是通过参数等等
反正是产生了一个Cat,Dog或者Mouse的实例。这我们不关注是什么
Client代码{
FourLeg fourLeg = FourLegFactory.factroy();
ElectricProducer.produceBy(fourLeg)
}
这样我们的发电机正常运作了
而且通过修改某种系统设置,可以更换任何一种动物来帮忙发电
试想,如果我们用FourLeg fourLeg = new Mouse();
那么一旦许要换成Cat,还需要修改Client的代码。
这就是simple factory