Java中组合 设计技巧 实例
关于组合 和 集成 先放两篇文章:这两篇文章写的太好了.
http://blog.csdn.net/u013905744/article/details/51752044 Java的组合(持有对象)与继承的区别
http://blog.csdn.net/ycjnx/article/details/40952969 java继承和组合的区别,看两个例子,你就明白了
然后下面 我就贴出代码,给出一些具体的实例:

下面贴出代码:
IModel 接口:
package com.etoak.shejimoshi.basequery.model; import net.sf.json.JSONArray;
import net.sf.json.JSONObject; import java.sql.SQLException;
import java.util.Map; public interface IModel { public JSONArray select(Map map); public JSONObject selectPageEasyUI(Map map); public JSONObject updatePageEasyUI(Map map) throws SQLException; public JSONObject deletePageEasyUI(Map map) throws SQLException; }
Model 实体类
package com.etoak.shejimoshi.basequery.model; import com.etoak.shejimoshi.basequery.dao.SimpleDAO;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.JsonConfig; import java.sql.SQLException;
import java.util.*; public class Model extends HashMap implements IModel { public Model() {
super();
} private String rows = "10";
private String page = "1";
private String nameSpace;
private SimpleDAO dao;
JsonConfig jf = new JsonConfig(); public SimpleDAO getDao() {
return dao;
}
public void setDao(SimpleDAO dao) {
this.dao = dao;
} public String getNameSpace() { return nameSpace; }
public void setNameSpace(String nameSpace) {
this.nameSpace = nameSpace;
} public String getRows() {
return rows;
}
public String getPage() {
return page;
} public void setRows(String rows) {
this.rows = rows;
}
public void setPage(String page) {
this.page = page;
} public JSONArray select(Map map) {
if (map.containsKey("sqlId") && map.get("sqlId") != null) {
return dao.select(nameSpace, (String) map.get("sqlId"), map, jf);
} else {
return dao.select(nameSpace, map, jf);
}
} public JSONArray select(String sqlid, Map map) {
return dao.select(nameSpace, sqlid, map, jf);
} public JSONObject selectPageEasyUI(Map map) {
return dao.selectPageEasyUI(nameSpace, map, jf);
} public JSONObject selectPageEasyUI(String sqlid, Map map) { return dao.selectPageEasyUI(nameSpace, sqlid, map, jf); } public JSONObject updatePageEasyUI(Map map) throws SQLException { return dao.updatePageEasyUI(nameSpace, map); } public JSONObject update(String string, Map map) throws SQLException { return dao.updatePageEasyUI(nameSpace, string, map); } public JSONObject deletePageEasyUI(Map map) throws SQLException { return dao.deletePageEasyUI(nameSpace, map); } }
dao接口
package com.etoak.shejimoshi.basequery.dao; import com.ibatis.sqlmap.client.SqlMapClient;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.JsonConfig; import java.sql.SQLException;
import java.util.Map; public interface SimpleDAO { public JSONObject selectPageEasyUI(String nameSpace, Map map, JsonConfig jf); public JSONObject selectPageEasyUI(String nameSpace, String sqlid, Map map, JsonConfig jf); public JSONArray select(String nameSpace, Map map, JsonConfig jf); public JSONArray select(String nameSpace, String sqlid, Map map, JsonConfig jf); public JSONObject updatePageEasyUI(String nameSpace, Map map) throws SQLException; public JSONObject updatePageEasyUI(String nameSpace, String sqlid, Map map) throws SQLException; public JSONObject deletePageEasyUI(String nameSpace, Map map) throws SQLException; public SqlMapClient getSqlMapClient();
}
dao实现类
package com.etoak.shejimoshi.basequery.dao; import java.sql.SQLException;
import java.util.Map; import com.ibatis.sqlmap.client.SqlMapClient;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.JsonConfig; public class SimpleDaoImpl implements SimpleDAO{ @Override
public JSONObject selectPageEasyUI(String nameSpace, Map map, JsonConfig jf) {
return null;
} @Override
public JSONObject selectPageEasyUI(String nameSpace, String sqlid, Map map, JsonConfig jf) {
return null;
} @Override
public JSONArray select(String nameSpace, Map map, JsonConfig jf) {
return null;
} @Override
public JSONArray select(String nameSpace, String sqlid, Map map, JsonConfig jf) {
return null;
} @Override
public JSONObject updatePageEasyUI(String nameSpace, Map map) throws SQLException {
return null;
} @Override
public JSONObject updatePageEasyUI(String nameSpace, String sqlid, Map map) throws SQLException {
return null;
} @Override
public JSONObject deletePageEasyUI(String nameSpace, Map map) throws SQLException {
return null;
} @Override
public SqlMapClient getSqlMapClient() {
return null;
}
}
user实体类:
package com.etoak.shejimoshi.userquery.model; import com.etoak.shejimoshi.basequery.dao.SimpleDAO;
import com.etoak.shejimoshi.basequery.model.IModel;
import com.etoak.shejimoshi.basequery.model.Model;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject; import java.sql.SQLException;
import java.util.Map; public class User implements IModel { public static User config;
private Model model;
private SimpleDAO dao; public SimpleDAO getDao() {
return dao;
} public void setDao(SimpleDAO dao) {
this.dao = dao;
config.model.setDao(config.getDao());
} public User() {
super();
if (config == null) {
config = this;
config.model = new Model();
}
} @Override
public JSONArray select(Map map) {
return config.model.select(map);
} @Override
public JSONObject selectPageEasyUI(Map map) {
return config.model.selectPageEasyUI(map);
} @Override
public JSONObject updatePageEasyUI(Map map) throws SQLException {
return config.model.updatePageEasyUI(map);
} @Override
public JSONObject deletePageEasyUI(Map map) throws SQLException {
return config.model.deletePageEasyUI(map);
}
}
Java中组合 设计技巧 实例的更多相关文章
- Verilog设计技巧实例及实现
Verilog设计技巧实例及实现 1 引言 最近在刷HDLBits的过程中学习了一些Verilog的设计技巧,在这里予以整理.部分操作可能降低代码的可读性和Debug的难度,请大家根据实际情况进行使用 ...
- Java 中静态变量和实例变量区别
Java 中静态变量和实例变量区别 静态变量属于类,该类不生产对象,通过类名就可以调用静态变量. 实例变量属于该类的对象,必须产生该类对象,才能调用实例变量. 在程序运行时的区别: 实例变量属于某个对 ...
- Java中共享设计
Java中的共享设计的思路是在Java中形成一个对象池,在这个对象池中保存多个对象, 新实例化的对象如果已经在池中定义了,则不再重复新定义,而从池中直接取出继续使用. 例如,对于字符串来说,Java ...
- java中只能有一个实例的类的创建
Java中,如果我们创建一个类,想让这个类只有一个对象,那么我们可以 1:把该类的构造方法设计为private 2:在该类中定义一个static方法,在该方法中创建对象 package test; / ...
- JAVA中容器设计的进化史:从白盒到黑盒,再到跻身为设计模式之一的迭代器
大家好,又见面了. 在我们的项目编码中,不可避免的会用到一些容器类,我们可以直接使用List.Map.Set.Array等类型.当然,为了体现业务层面的含义,我们也会根据实际需要自行封装一些专门的Be ...
- 解析Java中静态变量与实例变量的区别
java类的成员变量有俩种:一种是被static关键字修饰的变量,叫类变量或者静态变量:另一种没有static修饰,为实例变量. 在语法定义上的区别:静态变量前要加static关键字,而实例 ...
- Java中静态变量与实例变量
知识回顾 上一篇总结了java中成员变量和局部变量的区别,这一篇将总结静态变量和实例变量的一些特性和区别. 示例代码 package Variable; public class VariableDe ...
- java中反射讲解及实例
Java反射机制详解 java 反射 定义 功能 示例 概要: Java反射机制详解 | |目录 1反射机制是什么 2反射机制能做什么 3反射机制的相关API ·通过一个对象获得完整的包名和类名 ·实 ...
- JAVA中的优化技巧(适用Android)
最近的机器内存又爆满了,除了新增机器内存外,还应该好好review一下我们的代码,有很多代码编写过于随意化,这些不好的习惯或对程序语言的不了解是应该好好打压打压了. 下面是参考网络资源总结的一些在Ja ...
随机推荐
- Hibernate学习---用Session实现CURD
我们使用Hibernate的目的是什么?对数据库进行操作,所有接下来我们就用Hibernate来进行CURD. 前边我们已经分析过了Configuration,SessionFactory和Sessi ...
- iOS超全开源框架、项目和学习资料汇总--数据库、缓存处理、图像浏览、摄像照相视频音频篇
iOS超全开源框架.项目和学习资料汇总--数据库.缓存处理.图像浏览.摄像照相视频音频篇 感谢:Ming_en_long 的分享 大神超赞的集合,http://www.jianshu.com/p/f3 ...
- Servlet小总结
Servlet Servlet(服务器端小程序)是使用Java语言编写的服务器端程序,像JSP一样,生成动态的Web页.Servlet主要运行在服务器端,并由服务器调用执行. Servlet处理的基本 ...
- 507. Perfect Number
We define the Perfect Number is a positive integer that is equal to the sum of all its positive divi ...
- 【WebGL】《WebGL编程指南》读书笔记——第2章
一.前言 最近看了<WebGL编程指南>这本书,发现还是很有意思的,故每章阅读后做个笔记. 二.正文 Example1:在canvas中绘制矩形 <!DOCTYPE html> ...
- LAMP第一部分-环境搭建
1. 安装mysqlcd /usr/local/src/ wget http://syslab.comsenz.com/downloads/linux/mysql-5.1.40-linux-i686- ...
- lesson - 1 - IP /DNS /cat !$ /putty 知识扩充
一.知识点扩充 1.嵌入式Linux 开发与运维 .安卓手机 . Linux真正的用武之地是蓬勃发展的信息接入设备市 场.这些新兴的设备只有有限的内存,价格也只有几百美元,因此开发者需要新的 ...
- 实体框架(Entity Frmaework)简介
l简称EF NH l与Asp.Net MVC关系与ADO.NET关系 lADO.NET Entity Framework 是微软以 ADO.NET 为基础所发展出来的对象关系对应 (O/R Mapp ...
- iOS音频采集过程中的音效实现
1.背景 在移动直播中, 声音是主播和观众互动的重要途径之一, 为了丰富直播的内容,大家都会想要在声音上做一些文章, 在采集录音的基础上玩一些花样. 比如演唱类的直播间中, 主播伴随着背景音乐演唱. ...
- Qt仿win7自动顶部最大化左侧右侧半屏效果
Win7系统不得不说是非常好用的,也是目前为止占用份额最大的操作系统,其中win7有个效果,将窗体拖动到顶部时会自动最大化,拖动到左侧右侧时会自动半屏显示,再次拖动窗体到其他位置,会重新恢复之前的大小 ...