模板设计模式_组合&继承实现

原创 2016年05月31日 18:33:52
package org.test.spring.template;
/**
 * 基于继承的模版设计模式!
 * @author asus_n56
 *
 */
public abstract class MytemplateByIn {
	
	private void beginConnection(){
		System.out.println("开始连接!");
	}
	private void closeConnection(){
		System.out.println("关闭连接!");
	}
	
	public abstract void run();
	public abstract boolean validateRun();
	
	public void execute(){
		this.beginConnection();
		if (this.validateRun()) {
			this.run();
		}
		this.closeConnection();
	}
}

package org.test.spring.template;

public class RoleDao extends MytemplateByIn {
	
	private MytemplateByZuHe mytemplateByZuHe = new MytemplateByZuHe();
	
	public void add(int id) {
		mytemplateByZuHe.add(id);
	}
	public void delete(int id) {
		mytemplateByZuHe.delete(id);
	}
	/**
	 * 上面是zuhe实现,下面是继承实现
	 */
	@Override
	public void run() {
		System.out.println("这是执行的run()");
	}

	@Override
	public boolean validateRun() {
		return true;
	}

	

}

package org.test.spring.template;
/**
 * 模版设计模式的组合实现
 * @author asus_n56
 *
 */
public class MytemplateByZuHe {
	
	private void beginConnection(){
		System.out.println("开始连接!");
	}
	private void closeConnection(){
		System.out.println("关闭连接!");
	}
	
	/**
	 * 调用方法,传入一个钩子函数的的接口
	 */
	public void execute(MyCallBack myCallBack){
		this.beginConnection();
		myCallBack.doInTempletate();
		this.closeConnection();
	}
	
	/**
	 * 所有要实现的方法都在模版中建立
	 */
	public void add(final int id) {
		this.execute(new MyCallBack() {
			
			@Override
			public void doInTempletate() {
				System.out.println("添加了某某!+"+id);
			}
		});
	}
	
	public void delete(final int id) {
		this.execute(new MyCallBack() {
			
			@Override
			public void doInTempletate() {
				System.out.println("删除了+"+id);
				
			}
		});
	}
}

package org.test.spring.template;

import org.junit.Test;

public class RoleDaoTest {
	private RoleDao roleDao  = new RoleDao();
	private MessageDao messageDao = new MessageDao();

	@Test
	public void testRun() {
		roleDao.execute();
	}
	
	@Test
	public void testMessage(){
		messageDao.execute();
	}
	
	@Test
	public void testZuHe(){
		roleDao.add(100);
	}
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

java设计模式(三)——模板、访问者、组合、解释器、迭代器、中介者

一、TemplateMethod模板方法模式 模板方法模式是类的行为模式。准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现, 然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以...

设计模式六种关系:依赖、关联、聚合、组合、继承和实现

设计模式六种关系:依赖、关联、聚合、组合、继承和实现在面向对象设计模式中,类与类之间主要有6种关系,他们分别是:依赖、关联、聚合、组合、继承、实现。他们的耦合度依次增强依赖、关联、聚合和组合之间区别•...

《HeadFirst设计模式》书摘-模板方法/模式迭代器/组合

模板方法模式 定义 在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤 get到的oo原则 别找我...

Spring整合JDBC模板方法设计模式之基于继承的实现

Spring整合JDBC模板方法设计模式之基于继承的实现: 模板设计模式简单描述: 把相同的部分提取出来,当我们运行的时候自动往里面设置值,在JdbcTemplate 的源代码中得execute()....
  • rzg813
  • rzg813
  • 2014年09月23日 00:13
  • 2776

深入浅出设计模式之模板方法模式、迭代器模式、组合模式

模板方法模式

java设计模式(工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式、适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式,。 行为型模式,共十一种:策略模式、模板方法)

设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用、多数人知晓...

设计模式---继承和组合

 1.什么是继承 A继承B,说明A是B的一种,并且B的所有行为对A都有意义 A=鸵鸟 B=鸟 (不行),因为鸟会飞,但是鸵鸟不会。 2.什么是组合 若在逻辑上A是B的“一部分”(a...

设计模式推演——组合与继承

OO中,复用代码可以有组合和继承两种方式,正如广大人民群众所论述的,尽可能使用组合。 这里我再不厌其烦的说明一下理由: 1. 组合比继承在框架结构上要简单,不会造成过深的继承层次。 2. 组...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:模板设计模式_组合&继承实现
举报原因:
原因补充:

(最多只允许输入30个字)