当前位置:文档之家› java设计模式--项目框架与设计模式解析

java设计模式--项目框架与设计模式解析

第十五章
项目框架与设计模式
回顾
什么要同步? 怎么同步? 什么是死锁?
本章目标
项目框架 设计模式(单态模式、DAO模式、工厂模式)
通信示意图
客户端 服务器
Socket
服务器端
启动服务器,服务器端建立ServerSocket,并启 动监听线程,等待客户端连接。 监听线程接收到客户端连接后,启动接收线程。 在线程里对接收到的数据进行相应的处理。举例: 服务器接收到私聊包之后,转发给相应的客户端。
DAO模式类图
DAO模式的参与者和职责
BusinessObject(业务对象) 代表数据客户端。正是该对象需要访问数据源以获取和存储数据。 DataAccessObject(数据访问对象) 是该模式的主要对象。DataAccessObject抽取该BusinessObject的低 层数据访问实现,以保证对数据源的透明访问。BusinessObject也可 以把数据加载和存储操作委托给DataAccessObject DataSource(数据源) 代表数据源实现。数据源可以是各RDBMS数据库,OODBMS,XML 文件等等。 valueObject(值对象) 代表用做数据携带着的值对象。DataAccessObject可以使用值对象来 把数据返回给客户端。 DataAccessObject也许会接受来自于客户端的数据,其中这些用于更 新数据源的数据存放于值对象中来传递。
客户端
建立Socket连接到服务器,发送登陆包进行验证, 验证通过之后进入聊天界面并启动接收线程。 接收线程负责接收服务器发送或者转发的数据包。 如接收到在线用户包,则刷新在线用户列表;如 接收到私聊、群聊、公告包则显示出来。 注:客户端不连接数据库,所有对服务器数据的 修改都是通过发数据包到服务器,由服务器端来 完成。
单态模式的应用场景
资源访问的统一入口类(计数器、外部资源的访问) 控制实例的个数,便于垃圾回收
ValueObject(值对象)
数据封装
属性的setter,getter方法
数据传递
DAO模式
数据访问对象(Data Access Object) 模式 (CRUD) Create,Retrieve, Update ,Delete
DAO模式
使用数据访问对象(DAO)模式来抽象和封装所有 对数据源的访问。DAO管理着与数据源的连接以 便检索和存储数据。 DAO实现了用来操作数据源的访问机制。数据源 可以时RDBMS,文件系统等等。依赖于DAO的业 务组件为其客户端使用DAO提供更简单的接口。 DAO完全向客户端隐藏了数据源实现细节。由于 当低层数据源实现变化时,DAO向客户端提供的 接口不会变化,所有该模式允许DAO调整到不同 的存储模式,而不会影响其客户端或者业务组件。 重要的是,DAO充当组件和数据源之间的适配器。
工厂模式(Factory)
提供创建对象的方法,利用工厂模式可是做到针对 接口(interface)编程。
工厂模式实现
根据传入的参数生成不同的实现类,实现类以统一的类型 返回。 举例: public Sample createSimple(int which){ if (which==1) return new SampleA(); else if(which==2){ return new SampleB(); else re
DAO模式+工厂模式类图
回顾
项目框架 设计模式(单态模式、DAO模式、工厂模式)
主要技术难点
通信 多线程 在线用户刷新 数据的转发(Socket和用户id的对应关系) 数据保存方式的切换 参数的传递
单态模式
Singleton模式主要作用是保证在Java应用程序中, 一个类Class只有一个实例存在。
单态模式的实现
public class Singleton { //私有的构造,保证只有自己能调用 private Singleton(){} //在自己内部定义自己一个实例 //注意这是private 只供内部调用 private static Singleton instance = new Singleton(); //这里提供了一个供外部访问本class的静态方法,可以直接访问 public static Singleton getInstance() { return instance; } }
相关主题