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太像了,所以简单的工厂模式也很相似,只是我在琢磨闭包和方法一定有不同适应的环境,在不同情况下我们选择合适的方式
分享到:
- 2007-05-16 10:21
- 浏览 1843
- 评论(0)
- 论坛回复 / 浏览 (0 / 2572)
- 查看更多
相关推荐
在"抽象工厂模式的简单实现"中,我们可以看到一些常见的Gradle项目文件。Gradle是一个基于Groovy和Java的构建自动化工具,它允许开发者以声明式的方式定义构建过程。以下是相关知识点的详细说明: 1. **抽象工厂...
本文将详细讲解如何使用JVM动态执行Groovy脚本的方法,主要包括利用JShell执行代码、调试模式下动态执行代码以及利用javax.script包执行Groovy脚本。以下是对各知识点的详细说明。 1. 利用JShell执行代码 Java 9 ...
Groovy的文档中详细介绍了如何在Groovy中实现各种设计模式,如工厂模式、适配器模式、职责链模式等。这些设计模式有助于解决常见的软件设计问题,如接口不匹配、对象管理复杂、系统难以扩展等。通过学习和应用这些...
书中可能会讨论如何用函数式编程模式替换面向对象编程中的常见模式,如工厂方法、单例、观察者模式等。例如,使用函数式编程可以简化创建对象的过程,通过高阶函数实现单例模式,以及利用反应式编程替代事件驱动。 ...
8. **设计模式的应用**:自动生成代码可以帮助实现设计模式,比如工厂模式、单例模式等,从而保持代码结构的整洁和可维护性。 9. **测试代码生成**:Mockito等测试框架可以生成测试桩(mock objects),帮助编写...
在" CodingPattern.java "这个源文件中,可能包含了如单例模式、工厂模式、观察者模式等经典设计模式的实现。这些模式不仅提高了代码的可读性和可维护性,还能帮助开发者更好地组织和管理代码,提升软件的扩展性和...
- **Bean实例化**:有多种方式实例化bean,包括使用构造函数、静态工厂方法和实例工厂方法。 3. **面向切面编程(AOP)**:Spring的AOP允许开发者定义“方面”,这些方面是跨越多个对象的横切关注点,如日志、...
- **核心容器**:这部分包含了Spring框架的基本组成部分,包括BeanFactory,它是工厂模式的实现。BeanFactory使用控制反转(IoC)来管理应用中的对象。此外,还提供了配置元数据的多种格式,如XML、Java注解或Java...
3.1 不简单的算术运算符 22 3.1.1 “+”运算符 22 3.1.2 “-”运算符 24 3.1.3 “*”运算符 25 3.1.4 “/”运算符 25 3.1.5 “%”运算符 26 3.2 自增自减运算 27 3.3 关系运算 28 3.3.1 等于/不...
4. 集成了Groovy脚本支持:开发者可以通过Groovy来编写配置,增加了灵活性,降低了复杂性。 5. AOP改进:对通知(advisors)和切入点(pointcuts)的处理更加高效,同时增强了对环绕通知的支持。 6. 数据访问增强...
- **依赖注入与控制反转**:Spring的核心功能之一是依赖注入(DI),这是一种设计模式,用于实现松耦合的应用程序组件。控制反转(IoC)容器负责管理对象的生命周期和配置,从而实现了依赖注入。 - **框架模块**: ...
- **AOP**: 通过代理模式实现面向切面编程。 - **DAO**: 数据访问对象模式的实现,简化了JDBC编程。 - **Transaction**: 用于管理事务。 - **Web**: 包含了Web开发所需的特定上下文和MVC框架。 ### 2. Hibernate...
- **依赖注入与控制反转**:依赖注入是一种设计模式,通过将对象的依赖关系外部化,实现组件之间的解耦。在Spring框架中,依赖注入主要通过XML配置文件或注解来实现。控制反转是指将程序的控制权交给一个容器,而...
对象可以包含方法和字段,通常用来实现工厂模式或作为全局工具类。 - **继承**:Scala支持类之间的继承关系。子类可以通过`extends`关键字继承父类的属性和方法。 - **特质**:Scala中的特质类似于Java中的接口,但...
1. **获取Parser实例**:使用`XmlPullParserFactory`工厂类创建`XmlPullParser`实例,设置解析模式和属性。 2. **设置输入源**:调用`setInput()`方法,传入XML数据的输入流或字符序列。 3. **遍历事件**:进入一...
2009年,Spring 3.0发布,全面支持Java EE 6,增加了对RESTful服务、Groovy的支持,并引入了Spring Expression Language (SpEL)。 2014年的Spring 4.0带来了对Java 8的全面支持,改进了对WebSocket和反应式编程的...
- **Groovy集成**:Spring支持使用Groovy等脚本语言,以提供更灵活的应用程序扩展能力。 - **动态脚本**:Spring还支持动态脚本的执行,可用于运行时动态配置等场景。 #### 15. 应用监控 - **监控工具**:Spring...
- **核心容器(Core Container)**:包含Spring框架的基本组成部分,如BeanFactory,它是工厂模式的实现,用于创建和管理bean对象。 - **面向切面编程(AOP and Instrumentation)**:提供了面向切面编程的支持,可以...
- **设计模式**:如简单工厂模式、单例模式等,用于解决常见的软件设计问题。 ### Java 核心类库 #### java.util - **集合框架**:List、Set、Map 等,用于存储和操作数据。 - **日期和时间 API**:Date、Calendar...