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 ...
随机推荐
- vue2.0---vue-router总结(项目基于vue-cli)
vue2.0---vue-router总结(项目基于vue-cli) 1. 在项目中安装: npm install vue-router --save 2. 在项目中的引入: // The Vue b ...
- iOS SDAutoLayout图文混排-共享
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #526eda } span.s1 { color: #4dbf5 ...
- SQL Server 修改AlwaysOn共享网络位置
标签:MSSQL/故障转移 概述 很多人一开始搭建Alwayson的时候对于共享网络位置的选择不是很重视, 导致后面需要去修改这个路径.但是怎样修改这个路径呢?貌似没有给出具体的修改选项,但是还是有地 ...
- Geode集群搭建
Geode集群搭建 1.下载安装包 http://mirror.bit.edu.cn/apache/geode/1.2.0/ 2.安装解压后即可直接使用 apache-geode-1.2.0 3.进入 ...
- Python 项目实践三(Web应用程序)第二篇
接着上节的继续学习,使用Django创建网页的过程通常分三个阶段:定义URL.编写视图和编写模板.首先,你必须定义URL模式,每个URL都被映射到特定的视图--视图函数获取并处理网页所需的数据.视图函 ...
- 多线程下QAxObject指针为NULL的解决办法
项目中需要对Excel进行操作,把数据中的数据写入到Excel文件中.在数据量大的情况下,操作Excel是一件费时的操作. 但是执行到下列代码时就会出现空指针的情况: QAxObject *excel ...
- django xdmin使用
我们来看看我们原先django给我们自带的admin后台是什么样子的呢 有人说,你的界面怎么那么丑,我说这个还叫丑吗,他说丑,我说你来,我看看你的,上图 看到登录界面后,我说别看了,我去修改,修改,我 ...
- touch监听判断手指的上滑,下滑,左滑,右滑,事件监听
判断滑动的方向和距离,来实现一定的效果,比如返回上一页等等 <body> <script> $(function(){ //给body强制定义高度 var windowHeig ...
- git 分支操作
查看git分支: git fetch刷新git git branch -a 列出所有的分支 git checkout origin/要切换的分支 git branch -r 查看远程分支 git c ...
- python实现散列表的直接寻址法
散列表(Hash table,也叫哈希表),是根据键(Key)而直接访问在内存存储位置的数据结构.也就是说,它通过计算一个关于键值的函数, 将所需查询的数据映射到表中一个位置来访问记录,这加快了查找速 ...