`
junrainbow
  • 浏览: 2680 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

阅读更多
工厂方法模式:
很多人都会与抽象工厂模式混淆在一起,工厂方法主要想表达,父类的方法或方法中调用了其他对象的方法时,有部分父类无法确定,但又想让父类完成大多开发工作,使得子类们可以最大限度的复用,又能动态的改变实现利于扩展性。


定义工厂方法类
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();
}
完成了,下次又需要抓一只叫“大白的老鼠”,那么和上面一样,只需要覆盖抽象方法即可。如果步骤一与步骤三的工作量很大,你就知道这是多么爽的一件事了。因为你完全没写,它就实现了,而且还能动态的指挥猫咪抓哪种老鼠,这里不提模式之间的组合,否则代码会很多,不易学习这种模式。代码语法可能有错误,全手敲的。见谅~

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

相关推荐

Global site tag (gtag.js) - Google Analytics