`
XiaoFan012
  • 浏览: 15881 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

小说Java接口传参数

 
阅读更多

  这段时间做了一些接口开发,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手册中英文java8,java9手册

    在Java SE 1.5版本中引入了泛型编程、类型安全的枚举、不定长参数和自动装/拆箱特性。太阳微系统对Java语言的解释是:“Java编程语言是个简单、面向对象、分布式、解释性、健壮、安全与系统无关、可移植、高性能、多...

    JAVA电子书

    【Lesson10】可能是关于Java的高级主题,比如多线程、并发编程、同步机制,或者是Java集合框架的深入研究,例如Map接口和并发容器如ConcurrentHashMap。 通过这个【JAVA电子书】,读者不仅能够学习到Java语言的基础...

    Java语言程序设计 - 北邮

    通过参数传递和返回值,函数可以在不同的上下文中被调用,实现代码的重用。 异常处理是Java编程中不可或缺的一部分,它允许程序员捕获并处理运行时错误,以防止程序崩溃。通过try-catch-finally语句块,可以优雅地...

    java小说人物分析.doc

    根据给定文件的信息,我们可以提炼出以下几个主要的知识点: ...这个项目不仅涉及到了Java的基本语法和常用API,还涵盖了文本处理、数据结构与算法、GUI设计等多个方面,对于学习Java编程具有很好的实践意义。

    java笔试题 java面试题 java基础

    "九阴真经"常被武侠小说爱好者用来形容深厚的内功心法,这与Java中的核心概念相吻合。在Java中,"九阴真经"可以比喻为: 1. **基本语法**:包括注释、变量声明、常量定义、运算符、流程控制(如if-else、switch-...

    JAVA2核心技术第7版(英文版)gutenberg.rar

    《JAVA2核心技术第7版(英文版)》是Java编程领域的一本经典教材,由权威的Java专家撰写,深入浅出地介绍了Java语言的核心概念和技术。这个压缩包文件"JAVA2核心技术第7版(英文版)gutenberg.rar"位于"C:\Documents and...

    Java基于SSM(Spring+SpringMVC+MyBatis)小说阅读网站书城.zip

    基于java的实现MVC设计模式的请求驱动类型的轻量级Web框架,通过注解,无需实现任何接口,处理请求,支持restful。 三层结构:表现层、业务层、持久层 设计模式:Model(模型)、View(视图)、Controller(控制器) ...

    Java面试题葵花宝典

    这份宝典旨在帮助面试者充分准备,提高面试成功率,就如同武侠小说中的“九阴真经”,能够提供强大的内在支持。 一、Java基础 1. 数据类型:理解基本数据类型(整型、浮点型、字符型、布尔型)和引用数据类型(类、...

    网上书店 mysql java web J2EE

    4. **JDBC**(Java Database Connectivity):Java与数据库交互的接口,用于执行SQL语句,实现数据的增删改查。 在J2EE框架中,可能使用了**Spring**和**Hibernate**: 1. **Spring**:负责管理应用的bean,提供...

    基于SSM+maven+httpClient+jsoup实现小说网站项目.zip

    接着,定义Service层接口和实现,用于处理业务逻辑,比如查找小说、获取章节列表、获取章节内容等。在DAO层,使用MyBatis的XML映射文件或注解来编写SQL语句。对于网页抓取部分,会创建一个HttpClient实例,构造HTTP...

    基于SpringBoot + MyBatis + redis 的日夜阅读小说网站系统后台.zip

    标题中的“基于SpringBoot + MyBatis + redis 的日夜阅读小说网站系统后台”指的是一个使用了现代Java开发框架和技术栈构建的在线小说阅读平台的后端系统。这个系统利用SpringBoot、MyBatis和Redis来实现高效、稳定...

    基于ssm小说阅读器微信小程序源码数据库文档.zip

    MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。 4. **微信小程序**:微信小程序是腾讯公司推出的一种全新的开放能力,...

    基于ssm网络小说微信小程序源码数据库文档.zip

    7. **接口文档**:列出后端提供的API接口,包括请求方式、URL、参数及返回值,方便前端调用。 这个项目可以帮助学习者深入理解SSM框架在实际项目中的应用,以及微信小程序的开发流程。通过阅读源码,可以学习到...

    网络小说微信小程序设计+ssm后端源码案例设计.zip

    MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。它将SQL语句与Java代码分离,提高了开发效率。 【微信小程序设计】: 1. **页面结构**:微信小程序由多个页面组成,每个页面包括JSON配置文件、WXML...

    精选_基于SSM和MySQL实现的小说管理系统_源码打包

    在本系统中,Java作为主要的后端开发语言,用于实现业务逻辑和接口调用。 【数据库设计与管理】 在小说管理系统中,数据库设计至关重要。可能包含的表有“用户表”、“小说表”、“章节表”等。合理设计实体关系...

    基于ssm星火许电影小说网站.zip

    MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。 4. **毕业设计**:在大学的计算机科学专业中,毕业设计通常要求学生综合...

    基于SSM+vue的中学课内小说阅读与学习系统.zip

    《基于SSM+Vue的中学课内小说阅读与学习系统》是一个综合性的教育软件开发项目,结合了Java的Spring、SpringMVC和MyBatis(SSM)框架以及前端的Vue.js技术,旨在为中学生提供一个便捷、高效的小说阅读和学习平台。...

    基于SSM的小说阅读网站.rar

    4. **微信小程序接口集成**:项目标签提到了“微信小程序”,这意味着该小说阅读网站可能还包含了微信小程序的前端部分,允许用户通过微信小程序进行阅读。这需要开发者对接微信小程序的API,实现用户授权、数据同步...

Global site tag (gtag.js) - Google Analytics