关于组合 和 集成 先放两篇文章:这两篇文章写的太好了.

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中组合 设计技巧 实例的更多相关文章

  1. Verilog设计技巧实例及实现

    Verilog设计技巧实例及实现 1 引言 最近在刷HDLBits的过程中学习了一些Verilog的设计技巧,在这里予以整理.部分操作可能降低代码的可读性和Debug的难度,请大家根据实际情况进行使用 ...

  2. Java 中静态变量和实例变量区别

    Java 中静态变量和实例变量区别 静态变量属于类,该类不生产对象,通过类名就可以调用静态变量. 实例变量属于该类的对象,必须产生该类对象,才能调用实例变量. 在程序运行时的区别: 实例变量属于某个对 ...

  3. Java中共享设计

    Java中的共享设计的思路是在Java中形成一个对象池,在这个对象池中保存多个对象, 新实例化的对象如果已经在池中定义了,则不再重复新定义,而从池中直接取出继续使用. 例如,对于字符串来说,Java ...

  4. java中只能有一个实例的类的创建

    Java中,如果我们创建一个类,想让这个类只有一个对象,那么我们可以 1:把该类的构造方法设计为private 2:在该类中定义一个static方法,在该方法中创建对象 package test; / ...

  5. JAVA中容器设计的进化史:从白盒到黑盒,再到跻身为设计模式之一的迭代器

    大家好,又见面了. 在我们的项目编码中,不可避免的会用到一些容器类,我们可以直接使用List.Map.Set.Array等类型.当然,为了体现业务层面的含义,我们也会根据实际需要自行封装一些专门的Be ...

  6. 解析Java中静态变量与实例变量的区别

    java类的成员变量有俩种:一种是被static关键字修饰的变量,叫类变量或者静态变量:另一种没有static修饰,为实例变量.      在语法定义上的区别:静态变量前要加static关键字,而实例 ...

  7. Java中静态变量与实例变量

    知识回顾 上一篇总结了java中成员变量和局部变量的区别,这一篇将总结静态变量和实例变量的一些特性和区别. 示例代码 package Variable; public class VariableDe ...

  8. java中反射讲解及实例

    Java反射机制详解 java 反射 定义 功能 示例 概要: Java反射机制详解 | |目录 1反射机制是什么 2反射机制能做什么 3反射机制的相关API ·通过一个对象获得完整的包名和类名 ·实 ...

  9. JAVA中的优化技巧(适用Android)

    最近的机器内存又爆满了,除了新增机器内存外,还应该好好review一下我们的代码,有很多代码编写过于随意化,这些不好的习惯或对程序语言的不了解是应该好好打压打压了. 下面是参考网络资源总结的一些在Ja ...

随机推荐

  1. 2017年国内常用的公共NTP服务

    安卓机顶盒里常用的 http://cn.pool.ntp.org CERNET 的一堆服务器就在那里面 http://asia.pool.ntp.org 追踪它的IP,台湾.韩国.日本都有. 阿里云 ...

  2. 《计算机程序的构造和解释(第2版)》【PDF】下载

    <计算机程序的构造和解释(第2版)>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230382255 内容简介 <计算机程序的构造 ...

  3. spring boot oauth2的一些记录

    oauth2及时从一个项目A申请另一个项目B的访问的时候,不用在项目A输入项目B的用户名和密码,个人理解先跳转到项目B,利用项目B的用户名和密码得到一个code之类的,这里有点像openID,不过不是 ...

  4. 使用angularjs实现注册表单

    本文是在学习angularjs过程中做的相应的练习 github地址 https://github.com/2016Messi/angularjs1.6-form 演示地址 https://2016m ...

  5. shell编辑crontab任务

    crontab是Linux下执行定时任务的工具,之前偶尔需要用到时都是通过执行crontab -e命令或者通过root身份直接编辑/etc/cron.*/下的文件来添加定时任务.这段时间遇到了需要通过 ...

  6. android studio 环境变量配置

    1.需要添加path环境变量: 2.真机调试或模拟器调试需要启动adb adb kill-severadb -start-server可能有端口冲突--重启或者修改端口 创建密匙http://blog ...

  7. Oracle ADG搭建

    Oracle Active Data Guard搭建 一:安装 1.基础环境配置 1.1.开启强制日志记录 DG日志发送方式中ARCH进程和LGWR进程的ASYNC模式都是基于日志同步的,所以我们必须 ...

  8. 盗版SQL Server的性能限制

    盗版SQL Server的性能限制 微软的SQL Server产品分为两种卖法1.盒装 :Server+CAL授权方式(SQL2017取消了Server+CAL授权方式,盗版序列号,一般电脑城有卖光盘 ...

  9. day 10 字符编码和文件处理 细节整理

    pycharm是文本编辑器. 大概理解为:  输出到屏幕上的时候,是解码过的字符串,用 decode 处理的时候要编码成相应的流, encode 成你要用的格式就可以了 1 .字符编码: 字符==== ...

  10. Web程序员们,你准备好迎接HTML5了吗?

    HTML5作为下一代的web开发标准,其特性已经慢慢地出现在主流的浏览器中,这种新的HTML将会让浏览器不必再依赖Flash.QuickTime.Silverlight等插件,也简化了原来需要大量JS ...