请您先登录,才能继续操作

论坛首页 Java企业应用论坛

groovy简单工厂模式实现

浏览 2568 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-05-16  
groovy灵活的语法特征,让java程序员在实践中更能享受编程的简便,闲时做个一个工厂方法的例子如下:
(一)定义接口:
这里我使用闭包写了一个输出,其他实现类是不用实现闭包的
package designpattern;


interface Iproduce {
   
  def welcome={msg->println msg};
  void create();
  void delete();
}
(二) 一个简单实现类
package designpattern;

class AppleProduce  implements Iproduce {
    void create(){
        println '制造苹果'   
    }
    void delete(){
        println '删除苹果'
    }
}
(三)第二个简单实现类
package designpattern;


class PearProduce implements Iproduce {
   
    void create(){
        println  '制造梨子'
    }
    void delete(){
        println '删除梨子'
    }
}
(四)工厂类:用单体模式结合工厂方法
package designpattern;


class   ProduceFactory {

    static  ProduceFactory pf;
    Iproduce produce;
  //工厂实例
  static ProduceFactory getInstance(){
    if(pf==null){
        return new ProduceFactory();
    }
    else return pf;
  }
 
  //工厂方法
  Iproduce createProduce(def type){
      if(type=='apple'){
          return new AppleProduce();
      }
      if(type=='pear'){
          return new PearProduce();
      }
  }
}
(五) 简单测试类,使用接口中定义闭包实现日志记录
package designpattern;


class TestAppleProduce extends GroovyTestCase {
   
    def produce;
   
    void setUp(){
        produce=new ProduceFactory().createProduce('apple');
    }
   
    void testCreate() {
        produce.create();
        produce.welcome.call('apple');
    }
    void testDelete() {
        produce.delete();
        produce.welcome.call('apple');
    }
}

groovy 和Java太像了,所以简单的工厂模式也很相似,只是我在琢磨闭包和方法一定有不同适应的环境,在不同情况下我们选择合适的方式
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics