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

原创 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);
	}
}

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

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

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

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

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

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

OO中,复用代码可以有组合和继承两种方式,正如广大人民群众所论述的,尽可能使用组合。 这里我再不厌其烦的说明一下理由: 1. 组合比继承在框架结构上要简单,不会造成过深的继承层次。 2. 组...
  • crylearner
  • crylearner
  • 2013年05月05日 23:24
  • 2707

我的C++实践(6):模板与继承相结合的威力

    模板表示类的集合,让模板继承一个类与面向对象编程中的继承并没有本质的差别。但是在模板中使用继承有一些特别的地方,比如基类可以依赖于模板参数(例如继承B,这称为依赖型基类)、甚至模板参数直接可以...
  • zhoudaxia
  • zhoudaxia
  • 2009年08月31日 15:56
  • 2720

React学习之组合和继承(十)

React自身有一套非常强大的组合模型,官方强烈建议使用组合来代替继承实现组件的重用性1.包容化组件所谓的包容化组件即为不管孩子是什么都可以加进这个容器中作为它的子组件,比如说我们的Dialog弹框,...
  • qq_18661257
  • qq_18661257
  • 2017年03月18日 09:49
  • 1417

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

Spring整合JDBC模板方法设计模式之基于组合的实现: 模板设计模式指的是将相应的模板方法提取出来在一个专门的一个位置定义,然后把相同调用过程的操作通过模板实现。 对于模板设计模式,一般有2中方式...
  • rzg813
  • rzg813
  • 2014年09月23日 01:03
  • 3148

C++浅谈组合和继承

C++有三大特性:封装、继承和多态。 之前提到过继承是为了实现代码的复用,如果子类继承了父类那么就会继承父类所有的数据成员及成员函数,在公有继承的时候保持is-a原则,即每个子类的对象也是父类对象。 ...
  • persistence_s
  • persistence_s
  • 2017年03月08日 22:44
  • 447

继承、组合、委托

软件设计模式中,有很多经典模式,今天从最基本的继承、组合、委托开始研究(Inheritance、Composition、Delegation)。 一、继承(Inheritance) 简单来说,继承就...
  • fengzhongzhishenfu
  • fengzhongzhishenfu
  • 2014年04月13日 12:26
  • 1864

关于类的组合和继承

【出处】http://www.jizhuomi.com/software/53.html http://www.cnblogs.com/whitewolf/archive/2010/05/03/17...
  • fynjy
  • fynjy
  • 2015年08月22日 22:15
  • 1431

设计模式(笔记)优先使用对象组合而不是类继承

优先使用对象组合而不是类继承 问 概述 继承和组合都能达到一个代码复用的效果,但是类的继承通常是白箱复用,对象组合通常为黑箱复用。我们在使用继承的时候同时也就拥有了父对象中的保护成员,增...
  • liaoqianchuan00
  • liaoqianchuan00
  • 2014年05月01日 12:00
  • 3517
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:模板设计模式_组合&继承实现
举报原因:
原因补充:

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