0 0

package的命名以及实用价值,设计层次的一个问题?10

小弟有个问题一直捆饶了很久,作了一年多的程序员对公司的包名层次一直有个疑问?
我在设计一个模块的时候思维突然乱了起来,后来经过理清思路.原来包名设计的结构让我乱了,我实在是有点惊慌.
就此问大家在设计包名(package)是如何决策的?以及实用价值?为什么这样设计?
我先告诉大家,我的模块设计理念.(以example.com 的 warehouse模块作为讲述)


首先


存放BEAN文件的位置一般为:
com.example.model.warehouse.bean.*
存放DAO数据操作文件的位置一般为:
com.example.model.warehouse.dao.impl.*
存放DAO接口文件的位置一般为:
com.example.model.warehouse.dao.*
存放Service操作文件的位置一般为:
com.example.model.warehouse.service.impl.*
存放Service接口文件的位置一般为:
com.example.model.warehouse.service.*
存放页面方法文件的位置一般为:
com.example.view.warehouse.*

 

dao层与bean层的关系就不用多说了。
第一个问题dao层须不需要接口文件,既然属于数据操作底层文件。又有service文件所包含,为何需要dao层再有一个接口文件呢?


service层负责数据的校正以及检察的工作,没有问题后则与底层联系。


有一些方法如增删改需要校验以及检察工作,可是查询是否值得应用。如果用继承而不是把dao层实例出来在调用方法以及再写一便service的接口岂不更好,应变客户的变态说词不是更好更快的改进么?


请大家看一看,我也很想了解大家是怎么写的。学习一些心得,谢谢!


问题补充:
大家能不能把实际项目的工程结构给简述一下.我想从实践中找寻答案.不用写的特别详细简略的就可以,我不是想窥探大家的隐私.请以com.example为名讲解.或者自拟也可以.谢谢了!
2008年8月14日 17:56

4个答案 按时间排序 按投票排序

0 0

面向接口编程是为了提高可维护性,这样数据库访问对象的实现DAOIMPL的变动就不会影响到DAO接口了。

2008年8月19日 16:23
0 0

第一个问题dao层须不需要接口文件,既然属于数据操作底层文件。又有service文件所包含,为何需要dao层再有一个接口文件呢?


我的理解
JAVA现在推行面向接口编程,你使用了接口可以把你的dao类隐藏在接口后

解耦合,使用接口可以更方便你做修改,修改量比较小,如果使用继承,可能要修改的代码量比较大维护起来方便

2008年8月16日 14:29
0 0

我的心得就是发现spring的包分的直不错, 一直参照它来分的包!

2008年8月14日 22:41
0 0

包名是用来控制程序的名字空间的和封装程序的可见性的。
也就是让大家各自写的同名的类可以自由存在各自的包内,而不至于相互冲突;
public, protected 等访问修饰也是与包相关联的。

这个在《Thinking in Java》第二章,一切都是对象,有阐述。

Java包名是将应用的Internat的地址反过来形成的,因为网络地址是不会冲突的,反过来也一样不冲突。
一般为:
com.companyname.project.model

model就可以分的更细致了。


2008年8月14日 19:25

相关推荐

    Node.js-验证一个package.json文件

    在Node.js开发中,`package.json`文件是一个至关重要的组件,它存储了关于你的项目的信息,包括项目名称、版本、作者、依赖项等。验证`package.json`文件是为了确保其内容格式正确,遵循JSON规范,并且包含了运行...

    DELPHI PackAge使用集锦

    Package?上系?(project->Options->Packages->Build with runtime packages中加入, ?得Package Name彼此的分隔符?是『;』) ???入: 至於『???入』?然就和『???入』相反, 不?是?入及?放都要自己??理, 看起?好像『???...

    Java类名及package命名规范.doc

    Java编程语言有一套严格的命名规范,对于类名、包名、接口名以及各种标识符的命名,都有明确的规定。这些规范旨在提高代码的可读性和一致性,使得代码更易于理解和维护。以下是对Java类名、package命名规范的详细...

    python基础-Package与层次组织 将多个module组织在一个文件夹中,形成一个package; 例如: 一个名

    将多个module组织在一个文件夹中,形成一个package; 例如: 一个名叫A的package(文件夹)含一个名叫B的module(.py文件) 导入B的方式:import A.B from A.B import ### 在较大规模的python程序编写中很有用!

    PCB设计封装设计及命名规范

    在电子设计领域,PCB(Printed Circuit Board)设计中的封装设计是至关重要的一个环节,它涉及到元器件的物理尺寸、电气特性以及制造工艺的匹配。封装设计的规范性和准确性直接影响到电路板的组装质量和功能实现。本...

    Oracle中的package对象

    Package允许开发者像创建对象一样定义一组相关的过程、函数、类型以及全局变量,这些元素共享同一个命名空间,提高了代码的组织性和重用性。 Package中的全局变量是其重要组成部分,它们在同一个会话(session)内...

    语言的层次化设计实用教案.pptx

    其次,One-hot编码是一种状态机设计策略,它使用多位二进制寄存器来表示状态,其中只有一个位为1,其余为0。这种编码方式的优点在于减少了状态转换时所需的组合逻辑,因为译码过程简单。但缺点是需要更多的触发器,...

    java深度历险 详细讲解了java的package机制等

    首先,`package`机制是Java中的一个核心特性,它用于将相关的类和接口组织在一起,形成一个逻辑上的命名空间,防止类名冲突。例如,`java.util`包包含了各种实用工具类,如ArrayList和HashMap。创建自定义包时,...

    NuGetPackageExplorer.zip

    这对于.NET开发者来说是一个非常有价值的工具,特别是那些频繁发布和维护库的开发者。 从提供的压缩包子文件的文件名称"PackageExplorer.4.4.72"来看,这是NuGetPackageExplorer的一个具体版本,版本号为4.4.72。这...

    Allegro_建库和封装命名规则

    在电子设计自动化(EDA)领域,Allegro是一款广泛使用的PCB设计软件,它提供了从原理图设计到PCB布局布线的全套解决方案。在进行Allegro设计时,建库和封装命名规则是非常关键的步骤,它们直接影响到设计的准确性...

    Oracle package

    在这个例子中,我们创建了一个名为 `PK_WZW_1` 的Package规范,其中声明了一个公共过程 `P_CUR_1`。 ##### 3.2 创建 Package 实现 (Body) ```sql CREATE OR REPLACE PACKAGE BODY PK_WZW_1 IS -- 定义私有变量 ...

    Pycharm Available Package无法显示/安装包的问题Error Loading Package List解决

    主要介绍了Pycharm Available Package无法显示/安装包的问题Error Loading Package List解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习...

    8266_package_2.7.4.zip

    标题中的“8266_package_2.7.4.zip”指的是针对ESP8266芯片的一个软件包,版本号为2.7.4。ESP8266是一款流行的、低成本的Wi-Fi微控制器,广泛应用于物联网(IoT)设备,如智能家居、远程控制和数据传输等场景。这个...

    package in db2.pdf

    这些驱动程序内置了一个DB2 Wire Protocol ODBC驱动程序,该驱动程序能够在DB2 UDB上自动创建和绑定Package,并允许用户修改这些Package。 #### Package的优化与执行 - **优化级别**:控制SQL语句编译时的优化程度...

    Package Control.sublime-package

    `channel_v3.json` 文件是Package Control的重要组成部分,它是一个JSON格式的文件,存储了所有可用插件的清单信息,包括插件的名字、作者、版本、描述等元数据。这个文件是Package Control获取插件列表和版本信息的...

    unity2018 package manager引入本地包Demo

    要添加本地源,你需要编辑`Packages/manifest.json`文件,向`"scopedRegistries"`数组中添加一个新的对象,包含`"name"`(任意名称)、`"url"`(留空或用`"file://" + 本地路径`)以及 `"scopes"`(包的命名空间)。...

    关于java中package的设置

    其中每个文件都有一个public class,所以每个文件都以一个组件。如果你希望这些组件归属于一个 群组,便可以使用关键字package. 其实你只需在你的程序起始处这么写就可以了: package mypackage; 这时的 ...

    离线安装sublime text3 Package Control: Install Package

    Package Control是Sublime Text的一个关键插件,它允许用户轻松地安装、更新和管理其他插件,极大地提升了编辑器的功能和效率。本文将详细介绍如何在没有网络的情况下离线安装Sublime Text 3的Package Control及其...

    package背包

    在提供的压缩包文件名称列表中只有一个"package",这可能是指一个包含所有相关类的主文件或一个打包了整个项目的文件。通常,AS3的源代码文件扩展名为`.as`,而编译后的SWF文件扩展名为`.swf`。 为了使代码更易于...

    sublime text package control

    Package Control是Sublime Text的一个核心插件,它为用户提供了便捷的方式来管理和安装Sublime Text的各种插件。下面我们将深入探讨Package Control的工作原理、安装方法以及如何利用它来增强Sublime Text的功能。 ...

Global site tag (gtag.js) - Google Analytics