`
hbkh2000
  • 浏览: 197135 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

java package的设计原则

阅读更多

典型的J2EE项目,package的设计有成熟的套路可循,如分为domain、dao、service、action等等,职责已经分解的比较单一和清晰,循环依赖这样的情况出现并不多。而在一般的java项目,如服务器程序、客户端程序和通用性框架的开发中,包的设计并没有套路可循,毕竟由于应用和业务种类的不同,想得出通用性的设计套路是不大可能的。这时候遵循一些原则比之生搬硬套更为重要。在《敏捷软件开发》一书中对包的设计有深入的讨论,虽然针对的是发布的二进制包而言,但是对于java package的设计同样有借鉴意义,如对包的内聚性、可重用性、稳定性的强调,对于依赖的探讨,这些都是比较笼统的概念,不是那么直观,需要在实际运用中认真归纳和重构,向这些原则靠拢。

    我所想到一个比较直观的方法就是:对于一个包的描述,你是否能用一句简明扼要的话概括,也就是包的功能或者说介绍能否做到简明扼要,这是衡量一个包的设计是否合理的最简单的方法。如果可以,显然这个包的内聚性很好,所有的类都服务于一个目的,从而带来了重用的可能(其实我对重用性并不感冒,除了工具类外真正能重用的东西少之又少,内聚性才是需要关注的);反之,这个包可能承担了太多的职责或者依赖过多,仔细的重构和分离是需要做的。包的设计同样要遵循接口分离的原则,将接口与实现隔离在不同的包之中,客户程序就不会知道具体的实现,并且也保证了实现对接口的单向依赖。当然,这时就需要引入工厂类、插件或者IOC容器来负责实例化实现类。

分享到:
评论

相关推荐

    Java面向对象程序设计杨晓燕面向对象基本原则和模式.pptx

    第1页/共30页 Java面向对象程序设计杨晓燕面向对象基本原则和模式全文共30页,当前为第1页。 类的UML图 UML类图显示类的三个组成部分,第一是Java中定义的类名,第二个是该类的属性,第三个是该类提供的方法。 第一...

    包设计原则

    The majority of this book covers package design principles. But first we must consider the contents of a package: classes and interfaces. The way you design them has great consequences for the ...

    Java高级程序设计实战教程第一章-Java编码规范.pptx

    Java高级程序设计 第1章 Java编码规范 1.1 应用场景1.2 相关知识1.3 任务实施1.4 拓展知识1.5 拓展训练1.6课后小结 Java高级程序设计实战教程第一章-Java编码规范全文共13页,当前为第1页。 1.1 应用场景 一个大型的...

    自考04747《Java语言程序设计(一)》简答题全集.doc

    11、 Java中结构化程序设计有哪三种基本流程及分别对应java中那些语句 结构化程序设计有顺序、分支、循环三种基本流程 〔2分〕 java中的分支语句包括if语句、switch语句 〔1分〕 循环语句包括while语句、do-while...

    JAVA入门1.2.3:一个老鸟的JAVA学习心得 PART1(共3个)

    第8章 Java中的包(Package)命名习惯和注释 193 教学视频:43分钟 8.1 Java中的包(Package) 193 8.1.1 Java中的包 193 8.1.2 在Eclipse中使用包 194 8.1.3 天上掉下个package 197 8.1.4 包带来了什么? 197...

    最新自考04747《Java语言程序设计(一)》简答题全集资料.doc

    11、 Java中结构化程序设计有哪三种基本流程及分别对应java中那些语句 结构化程序设计有顺序、分支、循环三种基本流程 (2分) java中的分支语句包括if语句、switch语句 (1分) 循环语句包括while语句、do-while...

    Java入门1·2·3:一个老鸟的Java学习心得.PART3(共3个)

    第8章 Java中的包(Package)命名习惯和注释 193 教学视频:43分钟 8.1 Java中的包(Package) 193 8.1.1 Java中的包 193 8.1.2 在Eclipse中使用包 194 8.1.3 天上掉下个package 197 8.1.4 包带来了什么? 197...

    java版五子棋源码-java_design_pattern:图解Java设计模式

    1.设计模式七大原则 单一职责原则 接口隔离原则 依赖倒转(倒置)原则 里氏替换原则 开闭原则 迪米特法则 合成复用原则 1.1.单一职责原则 1.1.1.基本介绍 一个类只应负责一项职责。 1.1.2.应用实例 package ...

    普联架构设计技术方案.pptx

    1、开发平台概念—平台设计原则 基于模型驱动 业务模型、数据模型、软件模型 基于接口实现 业务接口、软件接口 基于灵活开放框架 技术框架、应用框架 清晰的层次结构 数据层次、软件层次 普联架构设计技术方案全文...

    Java线程安全synchronized

     并发编程的原则:设计并发编程的目的是为了使程序获得更高的执行效率,但绝不能出现数据一致性(数据准确)问题,如果并发程序连基本的执行结果准确性都无法保证,那并发编程没有任何意义。  为什么会出现数据不...

    〖程序设计基础〗练习题2及答案

    1.Java 和 c++都是面向对象的程序设计语言。( ) 2.字符串 "\'a\'" 的长度是5。( ) 3. 同一个类中定义多个参数列表不同的同名方法,叫做方法的重载。( ) 4. 一个类的定义包括定义类头和定义类体两个部分。( ) 5.一个...

    Command-Design-Pattern

    2017-2018设计原则 专案3 项目定义 使用我们在课堂上介绍的一种(或可能多种)设计模式解决软件开发问题。 您的问题应该与以前的项目不同。 去做 工作说明:使用100-200个字详细地写出您的问题定义。 设计模式:...

    Observer-Design-Pattern

    2017-2018设计原则 项目二 项目定义 使用我们在课堂上介绍的一种(或可能多种)设计模式解决软件开发问题。 您的问题应该与先前的项目不同。 去做 工作说明:使用100-200个字详细地写出您的问题定义。 设计模式:...

    H3C云计算&亚信安全技术专家个人博客文章汇总集.rar

    02 DeepSecurity安装部署八项原则 03 java.io.IOExceptionunauthorized.status code401 04 Deep Security Anti-malware模块扫描优化配置 05 DSM 安装时遇到Microsoft.VC80.CRT,version =“8.0.50727.6195故障...

    protoactor-dotnet:Proto Actor-适用于Go,C#和JavaKotlin的超快速分布式actor

    设计原则 简约的API -API应该小巧且易于使用。避免使用企业级容器和配置。 以现有技术为基础-已经有很多很棒的技术,例如网络和集群。建立在这些基础之上,而不是重新发明它们。例如,gRPC流用于联网,Consul用于...

    javaBean实验报告.doc

    掌握JSP、JavaBean和Servlet综合应用的基本原则 二、实验要求 创建一个WEB应用,综合利用JSP、JavaBean和Servlet技术实现用户登录(注册功能 选做)。程序至少包含:一个登录页面login.jsp,一个欢迎页面hello.jsp...

    Eclipse权威开发指南2.pdf

    5.3.1 CVS的一些重要设计原则..... 133 5.3.2 修订版:任何东西都不会被丢失..... 134 5.3.3 更新:跟上小组的进度..... 134 5.3.4 提交:共享您的资源..... 134 5.3.5 版本设置:捕获资源的当前状态..... 135 ...

    Eclipse权威开发指南3.pdf

    5.3.1 CVS的一些重要设计原则..... 133 5.3.2 修订版:任何东西都不会被丢失..... 134 5.3.3 更新:跟上小组的进度..... 134 5.3.4 提交:共享您的资源..... 134 5.3.5 版本设置:捕获资源的当前状态......

    Eclipse权威开发指南1.pdf

    5.3.1 CVS的一些重要设计原则..... 133 5.3.2 修订版:任何东西都不会被丢失..... 134 5.3.3 更新:跟上小组的进度..... 134 5.3.4 提交:共享您的资源..... 134 5.3.5 版本设置:捕获资源的当前状态......

    网络管理协议及应用开发

    16.2.1 Advent Java SNMP Package介绍 16.2.2 应用程序实例 16.2.3 小应用程序实例 16.3 小结 第十七章 清华大学校园网络综合管理系统 17.1 校园网络系统介绍 17.2 网络管理系统的整体结构 17.3 基于网管平台的...

Global site tag (gtag.js) - Google Analytics