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太像了,所以简单的工厂模式也很相似,只是我在琢磨闭包和方法一定有不同适应的环境,在不同情况下我们选择合适的方式
(一)定义接口:
这里我使用闭包写了一个输出,其他实现类是不用实现闭包的
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太像了,所以简单的工厂模式也很相似,只是我在琢磨闭包和方法一定有不同适应的环境,在不同情况下我们选择合适的方式