java package的设计原则

典型的J2EE项目,package的设计有成熟的套路可循,如分为domain、dao、service、action等等,职责已经分解的比较单一和清晰,循环依赖这样的情况出现并不多。而在一般的java项目,如服务器程序、客户端程序和通用性框架的开发中,包的设计并没有套路可循,毕竟由于应用和业务种类的不同,想得出通用性的设计套路是不大可能的。这时候遵循一些原则比之生搬硬套更为重要。在《敏捷软件开发》一书中对包的设计有深入的讨论,虽然针对的是发布的二进制包而言,但是对于java package的设计同样有借鉴意义,如对包的内聚性、可重用性、稳定性的强调,对于依赖的探讨,这些都是比较笼统的概念,不是那么直观,需要在实际运用中认真归纳和重构,向这些原则靠拢。
   我所想到一个比较直观的方法就是:对于一个包的描述,你是否能用一句简明扼要的话概括,也就是包的功能或者说介绍能否做到简明扼要,这是衡量一个包的设计是否合理的最简单的方法。如果可以,显然这个包的内聚性很好,所有的类都服务于一个目的,从而带来了重用的可能(其实我对重用性并不感冒,除了工具类外真正能重用的东西少之又少,内聚性才是需要关注的);反之,这个包可能承担了太多的职责或者依赖过多,仔细的重构和分离是需要做的。包的设计同样要遵循接口分离的原则,将接口与实现隔离在不同的包之中,客户程序就不会知道具体的实现,并且也保证了实现对接口的单向依赖。当然,这时就需要引入工厂类、插件或者IOC容器来负责实例化实现类。

文章转自庄周梦蝶  ,原文发布时间 2008-09-06

时间: 2024-11-04 13:31:39

java package的设计原则的相关文章

Java程序员应当知道的10个面向对象设计原则

(设计原则)底线是永远追求高内聚.低耦合的编码或设计. Apache 和 Sun的开源代码是学习Java和OOPS设计原则的良好范例.它们向我们展示了,设计原则在Java编程中是如何使用的.Java JDK 使用了一些设计原则:BorderFactory类中的工厂模式.Runtime类中的单例模式.java.io 类中的装饰器模式.顺便说一句,如果您真的对Java编码原则感兴趣,请阅读Joshua Bloch 的Effective Java,他编写过Java API.我个人最喜欢的关于面向对象设

程序员应知道这十大面向对象设计原则

面向对象设计原则是OOPS编程的核心, 但我见过的大多数Java程序员热心于像Singleton (单例) . Decorator(装饰器).Observer(观察者) 等设计模式, 而没有把足够多的注意力放在学习面向对象的分析和设计上面.学习面向对象编程像"抽象"."封装"."多态"."继承" 等基础知识是重要的,但同时为了创建简洁.模块化的设计,了解这些设计原则也同等重要.我经常看到不同经验水平的java程序员,他们有的不

java常量池是如何存放基本类型字面量的?和String 的处理方式是一样的吗?常量池的设计原则是什么?

问题描述 public class Test {public final int a=5;public final int b=5;public final int c=5;String d="abc";String e="abc";String f="abc";}常量池在存储 基本类型的字面量 ,和存储字符串 的存储方式是否一样,比如说 字符串"abc" ,在常量池中只存储一份, 那么基本类型 字面量 比如说上面定义的 5

这样做违反了JAVA设计原则吗?

问题描述 我们也许都写过下面的代码现在随着业务的发展,除了D类外,其它子类都需要增加doOtherThing方法,于是我们这样处理:同时D类的doOtherThing方法的写法是:publicvoiddoOtherThing(){//donothing;}请问这么做有什么问题?违反了面向对象设计原则中的哪个原则?如何改进呢? 解决方案 解决方案二:不会影响运行效率放着就放着吧解决方案三:没什么问题,你要是违反了面向对象设计原则中的哪个原则就是D类不应该出现doOtherThing这个方法用接口去

Java 23种设计模型详解_java

设计模式(Design Patterns)                                   --可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样.项目中合理的运用设计模式可以完美的解决很多问题,每

连载:面向对象葵花宝典:思想、技巧与实践(39) - 设计原则 vs 设计模式

又是设计原则,又是设计模式,到底该用哪个呢? ============================================================================= 在"设计模型"一章中,我们提到设计原则和设计模式是互补的,设计原则和设计模式互补体现在:设计原则主要用于指导"类的定义"的设计,而设计模式主要用于指导"类的行为"的设计.   举一个很简单的例子:假设我们要设计一个图形类Shape,这个类既支持三角

微服务的4大设计原则和19个解决方案

作者|郝炎峰 编辑|小智 本文将介绍微服务架构的演进.优缺点和微服务应用的设计原则,然后着重介绍作为一个"微服务应用平台"需要提供哪些能力.解决哪些问题才能更好的支撑企业应用架构. 注:本文转载自公众号 EAWorld,已获授权. 写在前面 微服务架构现在是谈到企业应用架构时必聊的话题,微服务之所以火热也是因为相对之前的应用开发方式有很多优点,如更灵活.更能适应现在需求快速变更的大环境. 微服务平台也是我目前正在参与的,还在研发过程中的平台产品,平台是以 SpringCloud 为基础

微服务的4个设计原则和19个解决方案

微服务架构现在是谈到企业应用架构时必聊的话题,微服务之所以火热也是因为相对之前的应用开发方式有很多优点,如更灵活.更能适应现在需求快速变更的大环境. 本文将介绍微服务架构的演进.优缺点和微服务应用的设计原则,然后着重介绍作为一个"微服务应用平台"需要提供哪些能力.解决哪些问题才能更好的支撑企业应用架构. 微服务平台也是我目前正在参与的,还在研发过程中的平台产品,平台是以SpringCloud为基础,结合了普元多年来对企业应用的理解和产品的设计经验,逐步孵化的一个微服务应用平台. 一.微

总结的几个Python函数方法设计原则

  这篇文章主要介绍了总结的几个Python函数方法设计原则,本文讲解了每个函数只做一件事.保持简单.保持简短.输入使用参数.输出使用return语句等内容,需要的朋友可以参考下 在任何编程语言中,函数的应用主要出于以下两种情况: 1.代码块重复,这时候必须考虑用到函数,降低程序的冗余度 2.代码块复杂,这时候可以考虑用到函数,增强程序的可读性 当流程足够繁杂时,就要考虑函数,及如何将函数组合在一起.在Python中做函数设计,主要考虑到函数大小.聚合性.耦合性三个方面,这三者应该归结于规划与设