工厂模式:根据传进的Class,动态产生目标类的实例;
class HumanFactory{
Human newInstance(Class c){
return (Human)Class.forName(c.getName()).newInstance();
}
}
抽象工厂模式:在工厂模式的基础上,进行更细致的产品线划分,进而动态产生目标类的实例;
class abstract HumanFactoryAbstract{
Human newInstance1(Class c){
return (Human)Class.forName(c.getName()).newInstance();
}
}
class HumanMaleFactory extends HumanFactoryAbstract{
Human newInstance(){
return super().newInstance(Class maleClass);
}
}
class HumanFemaleFactory extends HumanFactoryAbstract{
Human newInstance(){
return super().newInstance(Class FemaleClass);
}
}
可以看出:工厂模式的优点是高内聚、低耦合,上面的例子看出,每个工厂产生的实例在调用时都是互不影响的,提供给外部调用时,只需要提供*Factory.newInstance()方法即可。