这段时间做了一些接口开发,web、service、dao三层架构,分别打jar包。随着使用的增加,发现一个问题。常常一个功能开发好了以后,客户又来了新的需求。新需求建立在老的实现上,这时候就常常需要对老的接口进行变更。虽然说接口通常是为了某个特定目的的设计,尽量不要变化,但实际上可以朝着这个目标努力,但是不变却很难做到。
在这种三层架构分别打包的情况下,就要尽量考虑少变动,尽可能减少变更可能带来的影响。之前的接口传参一般两种方式,对象或者直接参数,如下
public interface sayHelloA(String personName);
public interface sayHelloB(Person person);
class Person{
String personName ;
... ...
}
对于sayHelloA,简单直接,实现起来也方便;sayHelloB却要先建立一个Person类,会更麻烦一点。通常,如果参数多,或者本身就是BO,那肯定直接用对象了。但是如果参数少点,比如三个参数,这种情况下,一般都会觉得直接传参数,简单明了,也懒得去写参数对象了。这时候假设我的接口已经设计并实现并交付客户使用了,某天客户说,我要对不同性别的人说不同的话! 好吧,参数变了,加一个性别参数,如下
public interface sayHelloA(String person, String sex);
public interface sayHelloB(Person person);
class Person{
String personName ;
String sex ;
... ...
}
发现去别了吗?如果以后还有需求更改的话,那接口可能还得继续改。如果使用方式sayHelloA且是dao层的接口,那估计郁闷了,上面调用的web、service都得跟着改。但是如果采用sayHelloB这种方式的话,那接口基本不用动,只需要给这个Person增加属性就好了,变动相对来说要少很多。
同样的,表间关联,如果是一对多的关系,可以建立独立的关联表,也可以在多表中存放单表主键,分别如下
tableA(id, colA1, colA2);
tableB(id, colB1, colB2, idA);
tableA(id, colA1, colA2);
tableB(id, colB1, colB2);
tableRelationAB(id, idA, idB);
实际上说白了,单独用一个表来维护关联关系,这样可以处理任何的关联(1:1,1:n,m:n),但是如果不这样做,那就是确定的1:n关系。一旦这种对应关系发生变更,编程了多对多,在这种情况下,表结构就必须重建,依赖于老关联关系的所有应用接口都要变更。这个就是麻烦的根源,当然并不是什么都要这样,具体视实际情况而定
分享到:
相关推荐
在Java SE 1.5版本中引入了泛型编程、类型安全的枚举、不定长参数和自动装/拆箱特性。太阳微系统对Java语言的解释是:“Java编程语言是个简单、面向对象、分布式、解释性、健壮、安全与系统无关、可移植、高性能、多...
【Lesson10】可能是关于Java的高级主题,比如多线程、并发编程、同步机制,或者是Java集合框架的深入研究,例如Map接口和并发容器如ConcurrentHashMap。 通过这个【JAVA电子书】,读者不仅能够学习到Java语言的基础...
通过参数传递和返回值,函数可以在不同的上下文中被调用,实现代码的重用。 异常处理是Java编程中不可或缺的一部分,它允许程序员捕获并处理运行时错误,以防止程序崩溃。通过try-catch-finally语句块,可以优雅地...
根据给定文件的信息,我们可以提炼出以下几个主要的知识点: ...这个项目不仅涉及到了Java的基本语法和常用API,还涵盖了文本处理、数据结构与算法、GUI设计等多个方面,对于学习Java编程具有很好的实践意义。
"九阴真经"常被武侠小说爱好者用来形容深厚的内功心法,这与Java中的核心概念相吻合。在Java中,"九阴真经"可以比喻为: 1. **基本语法**:包括注释、变量声明、常量定义、运算符、流程控制(如if-else、switch-...
《JAVA2核心技术第7版(英文版)》是Java编程领域的一本经典教材,由权威的Java专家撰写,深入浅出地介绍了Java语言的核心概念和技术。这个压缩包文件"JAVA2核心技术第7版(英文版)gutenberg.rar"位于"C:\Documents and...
基于java的实现MVC设计模式的请求驱动类型的轻量级Web框架,通过注解,无需实现任何接口,处理请求,支持restful。 三层结构:表现层、业务层、持久层 设计模式:Model(模型)、View(视图)、Controller(控制器) ...
这份宝典旨在帮助面试者充分准备,提高面试成功率,就如同武侠小说中的“九阴真经”,能够提供强大的内在支持。 一、Java基础 1. 数据类型:理解基本数据类型(整型、浮点型、字符型、布尔型)和引用数据类型(类、...
4. **JDBC**(Java Database Connectivity):Java与数据库交互的接口,用于执行SQL语句,实现数据的增删改查。 在J2EE框架中,可能使用了**Spring**和**Hibernate**: 1. **Spring**:负责管理应用的bean,提供...
接着,定义Service层接口和实现,用于处理业务逻辑,比如查找小说、获取章节列表、获取章节内容等。在DAO层,使用MyBatis的XML映射文件或注解来编写SQL语句。对于网页抓取部分,会创建一个HttpClient实例,构造HTTP...
标题中的“基于SpringBoot + MyBatis + redis 的日夜阅读小说网站系统后台”指的是一个使用了现代Java开发框架和技术栈构建的在线小说阅读平台的后端系统。这个系统利用SpringBoot、MyBatis和Redis来实现高效、稳定...
MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。 4. **微信小程序**:微信小程序是腾讯公司推出的一种全新的开放能力,...
7. **接口文档**:列出后端提供的API接口,包括请求方式、URL、参数及返回值,方便前端调用。 这个项目可以帮助学习者深入理解SSM框架在实际项目中的应用,以及微信小程序的开发流程。通过阅读源码,可以学习到...
MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。它将SQL语句与Java代码分离,提高了开发效率。 【微信小程序设计】: 1. **页面结构**:微信小程序由多个页面组成,每个页面包括JSON配置文件、WXML...
在本系统中,Java作为主要的后端开发语言,用于实现业务逻辑和接口调用。 【数据库设计与管理】 在小说管理系统中,数据库设计至关重要。可能包含的表有“用户表”、“小说表”、“章节表”等。合理设计实体关系...
MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。 4. **毕业设计**:在大学的计算机科学专业中,毕业设计通常要求学生综合...
《基于SSM+Vue的中学课内小说阅读与学习系统》是一个综合性的教育软件开发项目,结合了Java的Spring、SpringMVC和MyBatis(SSM)框架以及前端的Vue.js技术,旨在为中学生提供一个便捷、高效的小说阅读和学习平台。...
4. **微信小程序接口集成**:项目标签提到了“微信小程序”,这意味着该小说阅读网站可能还包含了微信小程序的前端部分,允许用户通过微信小程序进行阅读。这需要开发者对接微信小程序的API,实现用户授权、数据同步...