JAVA设计模式--工厂方法模式

来源:互联网 发布:linux培训 编辑:程序博客网 时间:2024/06/14 04:25
工厂方法模式:
很多人都会与抽象工厂模式混淆在一起,工厂方法主要想表达,父类的方法或方法中调用了其他对象的方法时,有部分父类无法确定,但又想让父类完成大多开发工作,使得子类们可以最大限度的复用,又能动态的改变实现利于扩展性。


定义工厂方法类
public abstract Class Cat implements ICat(){
//抓老鼠行为
public void catchMouse(String catName){
//步骤一
system.out.println(){
catName+"抓老鼠之前,做一些准备工作";
};
//步骤二
IMouse mouse = createMouseFactory();
mouse.kill();//老鼠个儿屁了
//步骤三
system.out.println(){
catName+"抓完老鼠,再做一些扫尾工作";
};
}

//抽象方法
public abstract IMouse createMouseFactory();
}


这时,只有个父类,还是个半成品,屁事儿干不了。但它实际上却已经实现了大部分代码工作。子类们或着是使用者要“构造一个猫对象”就很简单了。继续看一下:


//我们创建一只“TOM”猫
public Class TomCat extends Cat(){
//抓老鼠行为
public IMouse createMouseFactory(){
return new JettyMouse();//返回一个“杰瑞”老鼠
}
}


调用者,想让TOM抓老鼠,那么就这么简单:
public static void main(String args[]){
ICat cat = new TomCat();
cat.catchMouse();
}
完成了,下次又需要抓一只叫“大白的老鼠”,那么和上面一样,只需要覆盖抽象方法即可。如果步骤一与步骤三的工作量很大,你就知道这是多么爽的一件事了。因为你完全没写,它就实现了,而且还能动态的指挥猫咪抓哪种老鼠,这里不提模式之间的组合,否则代码会很多,不易学习这种模式。代码语法可能有错误,全手敲的。见谅~

这就是工厂方法模式的思想,实现的方式很多,就是让父类完成大量工作,把稳定的代码写到父类中,变化的部分延迟到子类中确定! 
原创粉丝点击