从学习编写程序到编写项目我们发现了一个问题,在没有按照设计模式的编写程序的情况下,总感到非常迷茫,没有头绪,这个程序应该有哪些功能,不得而知,所做出来的小项目,乱成一锅粥。
所以我们必须理解学习设计模式
首先我们要知道8条设计原则:
1.面向接口编程
2.优先使用对象组合而非类继承
3.分层:
1.用户UI层:UI
2.逻辑层:business
3.数据层:dao
4.层间交互的基本原则
5.开闭原则
6.依赖性倒置原则
7.接口隔离
8.替换原则
一般一个功能模块我们将它分为
Dao:数据层
dao:dao数据层接口,四种抽象方法(增、删、改、查)
factory:dao数据层工厂,用于返回dao数据层实现类,构造函数设为private
impl:实现类,对外不可见,用于实现dao数据曾接口中的所有功能
business:逻辑层
ebi:逻辑层接口,将UI层收集的数据(值对象)传递给dao实现类方法的抽象方法
ebo:逻辑层实现类,实现ebi中方法
facto:逻辑层工厂,用于返回逻辑层ebo类对象给ui层
vo:值对象
UI:用户交互界面
各层通过接口和工厂的交互来进行功能的实现
设计步骤
第一步设计vo
第二部设计dao
第三部设计business
第四部设计ui
每层的设计步骤
第一步设计接口
第二部实现实现类
第三部完成工厂的封装功能
例如模拟实现用户姓名年龄存储的模块功能逻辑层代码:
ebi:
package cn.hncu.example2.UserMessage.bussiness.ebi; import cn.hncu.example2.UserMessage.vo.UserVo; public interface UserEbi { public boolean creat(UserVo user); }
ebo:
package cn.hncu.example2.UserMessage.bussiness.ebo; import java.util.UUID; import cn.hncu.example2.UserMessage.bussiness.ebi.UserEbi; import cn.hncu.example2.UserMessage.dao.dao.UserDao; import cn.hncu.example2.UserMessage.dao.factory.UserDaoFactory; import cn.hncu.example2.UserMessage.vo.UserVo; public class UserEbo implements UserEbi { @Override public boolean creat(UserVo user) { String uuid = UUID.randomUUID().toString(); user.setUuid(uuid); UserDao userd = UserDaoFactory.getUserDao(); return userd.creat(user); } }
factory:
package cn.hncu.example2.UserMessage.bussiness.factory; import cn.hncu.example2.UserMessage.bussiness.ebi.UserEbi; import cn.hncu.example2.UserMessage.bussiness.ebo.UserEbo; import cn.hncu.example2.UserMessage.vo.UserVo; public class UserBusifactory { private UserBusifactory() { } public static UserEbi getUserEbi() { return new UserEbo(); } }
初步学习了设计模式从此对java的项目设计有了一定了解
用小本本记下来,避免以后忘记