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 ...
随机推荐
- 在用python操作mysql时报错:ModuleNotFoundError: No module named 'MySQLdb'
用Flask+python+mysql写一个小项目 系统 win10 py版本:3.6.1 在配置数据库时报错ModuleNotFoundError: No module named 'MySQLdb ...
- SpringBoot应用部署到Tomcat中无法启动问题
SpringBoot应用部署到Tomcat中无法启动问题 背景 最近公司在做一些内部的小型Web应用时, 为了提高开发效率决定使用SpringBoot, 这货自带Servlet容器, 你在开发We ...
- 比最差的API(ETW)更差的API(LTTng)是如何炼成的, 谈如何写一个好的接口
最近这几天在帮柠檬看她的APM系统要如何收集.Net运行时的各种事件, 这些事件包括线程开始, JIT执行, GC触发等等. .Net在windows上(NetFramework, CoreCLR)通 ...
- node作为客户端请求第三方
var http = require('http'); let util = require('util'); http.get('http://www.imooc.com/u/card',funct ...
- (转载)Eclipse将引用了第三方jar包的Java项目打包成可执行jar的两种方法
转载自:http://www.cnblogs.com/lanxuezaipiao/p/3291641.html 方案一:用Eclipse自带的Export功能 步骤1:准备主清单文件 "MA ...
- SLAM入门之视觉里程计(2):两视图对极约束 基础矩阵
在上篇相机模型中介绍了图像的成像过程,场景中的三维点通过"小孔"映射到二维的图像平面,可以使用下面公式描述: \[ x = MX \]其中,\(c\)是图像中的像点,\(M\)是一 ...
- visual studio 2012打开提示 未能将网站×××配置为使用 ASP.NET 4.5 和 尚未在Web服务器上注册,您需要手动将Web服务器配置为使用ASP.NET 4.5
未能将网站×××配置为使用 ASP.NET 4.5.为了使此网站正确运行,您必须将它手动配置为使用ASP.NET 4.5. ASP.NET 4.5尚未在Web服务器上注册,您需要手动将Web服务器配置 ...
- mysql 先分组在排序
mysql语句的语法模板: select distinct <select_list> from <left_table><join_type> join < ...
- lesson - 14 linux系统日常管理3
1. Linux系统服务管理工具ntsysv 类似图形界面管理工具,如果没有该命令使用 yum install -y ntsysv 安装常用服务:crond, iptables, network, s ...
- 第三节 - centos 内核启动、救援模式、 ls 、目录结构
Linux 第三节一.CentOS 启动: 1.内核引导: 1.win/linux 通电,2.BISO自检(CPU,内存,硬盘等 | U盘.光驱.网卡.硬盘启动 通过MBR知道内核内存硬件驱动位置并加 ...