模板设计模式Java初印象
来源:互联网 发布:数据追溯软件怎么编 编辑:程序博客网 时间:2024/05/21 19:42
概述
====
模板设计模式的两种方式:
1.基于继承的实现
2.基于组合的实现
一、基于继承的实现
1.首先,创建一个模板类MyJdbcTemplateByIn,在模板类的execute方法中定义调用过程
public abstract class MyJdbcTemplateByIn { private void beginConnection() { System.out.println("begin connetction"); } private void closeConnection() { System.out.println("close connetction"); } public abstract void run(); public void execute() { beginConnection(); run(); closeConnection(); } }
2.创建类RoleDao和MessageDao继承于模板类MyJdbcTemplateByIn,并分别重写run方法
public class RoleDao extends MyJdbcTemplateByIn { @Override public void run() { System.out.println("role add"); }}
public class MessageDao extends MyJdbcTemplateByIn { @Override public void run() { System.out.println("message add"); }}
3.测试
public class TestTemplate { //基于继承的方式 @test public void test1() throws Exception { MyJdbcTemplateByIn myJdbcTemplateByIn = new RoleDao(); myJdbcTemplateByIn.execute(); System.out.println("============="); MyJdbcTemplateByIn myJdbcTemplateByIn2 = new MessageDao(); myJdbcTemplateByIn2.execute(); }
运行结果为
begin connetctionrole addclose connetction=============begin connetctionmessage addclose connetction
二、基于组合的实现
1.首先创建模板类
public class MyJdbcTemplate { private void beginConnection() { System.out.println("begin connetction"); } private void closeConnection() { System.out.println("close connetction"); } /** * 调用方法:传入一个钩子函数的接口 */ public void execute(MyCallback callback) { beginConnection(); callback.doInTemplate(); closeConnection(); } /** * 将所有要实现的方法都创建在模板中 */ public void add(final int id) { execute(new MyCallback() { @Override public void doInTemplate() { System.out.println("add"+id); } }); } public void delete(final int id) { execute(new MyCallback() { @Override public void doInTemplate() { System.out.println("delete"+id); } }); }}
public interface MyCallback { public void doInTemplate();}
public class RoleDao extends MyJdbcTemplateByIn { private MyJdbcTemplate mt = new MyJdbcTemplate(); public void add(int id) { mt.add(id); } public void delete(int id) { mt.delete(id); } @Override public void run() { System.out.println("role add"); } @Override public boolean isLog() { return false; }}
public class TestTemplate { //基于组合的方式 @Test public void test2() throws Exception { RoleDao roleDao = new RoleDao(); roleDao.add(1); System.out.println("============="); roleDao.delete(2); }}
运行结果:
begin connetctionadd1close connetction=============begin connetctiondelete2close connetction
阅读全文
0 0
- 模板设计模式Java初印象
- 大话设计模式之初印象
- 《神经网络设计》初印象
- java初印象
- [笔记]软件体系结构(1)--模式初印象
- halcon模板匹配学习(一) Matching 初印象
- PB接触初印象
- VC++初印象
- ABAP/4初印象
- Servlet初印象
- Ruby初印象
- Rails初印象
- CSTC初印象
- WebLoad初印象
- C#初印象
- AndroidUI开发初印象
- Git初印象
- Macbookpro 初印象
- 无状态服务
- STM32 SPI 模拟实现 W25X16读写 代码
- UE4 Mobile Physical-Based Rendering and Material Template Design
- Javascript基础(六):数组及常用操作
- [前缀和] Codeforces Round #419 (Div. 2)B. Karen and Coffee
- 模板设计模式Java初印象
- 开灯问题
- win7恢复白板打开方式
- Hadoop遇到Browse the filesystem链接打不开
- 软件包管理
- Window环境变量
- 线程同步与互斥——实现互斥锁
- POJ 2528 线段树区间更新
- Codeforces Round #419 (Div. 2)