0 0

如何划分package?30

我有一个类叫serverUser,它有2个子类,一个是SSH的User,一个是FTP的User, 然后我有2个功能模块,一个是ssh的一些操作,一个是ftp的操作,相应的都有一个包,所以我的疑问是,我是将这3个User放在一个包里面?还是分拆到2个功能点里面?如图,又没有什么科学依据?

类似的还有?比如我有很多异常的定义,是将异常定义统一放一个包里面管理,还是分布到不同的要的模块里面管理。 感觉分布到不同的模块里面的话,符合共同关闭原则,即修改只修改一个包,但是不利于导航。


2012年7月29日 09:26

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

0 0

采纳的答案

很多时候,这是个人设计的经验积累以及习惯决定的。
比如说:jdk中的java.security包。这个主要解决安全相关的问题(证书、公钥、私钥、签名等等)。
现在具体看看异常类
java.security.AccessControlException类主要捕获访问控制的异常,放到java.security包中。
再看另一个java.security.cert.CertificateException类主要捕获各种证书问题导致的异常。该类放到java.security.cert包中。
为什么AccessControlException放到java.security包中,而CertificateException放到子包cert中?
很明显:证书问题导致的异常仅仅是安全范畴的一个子域,并且很多应用中不会用到证书,所以在package的划分上,类似于分而治之,单独放到cert包中。但是访问控制异常是围绕整个安全领域的,所以放到了安全的顶级package中:java.security。

2012年7月30日 17:05
0 0

如果一个应用或者一个模块仅仅是几个类文件,那么划分package显得多此一举。
package的划分主要针对有很多模块的大型项目,并且各个模块之间可利用package控制访问级别等等……

2012年7月30日 17:13
0 0

不好纠结这个问题,  按照第一次的思路布置. 过程中再调整(重构代码的时候做).
发布的时候确定下来就ok...

关于Exception我是放到每个模块下

2012年7月29日 16:17
0 0

个人观点:
首先ftp的user和ssh的user是两个概念,应该把FtpUser放到ftp包里面,SshUser放到ssh包里面。
异常类肯定要根据不同的异常放到不同的包里,建议多看看开源框架的异常类是如何划分package的。

2012年7月29日 10:42

相关推荐

    Delphi Package 使用集锦

    3. **模块化**:包可以帮助划分系统边界,使每个包专注于特定功能,易于维护和测试。 4. **延迟加载**:运行时按需加载包,节省资源,提高程序启动速度。 5. **版本控制**:每个包可以有自己的版本,便于跟踪和管理...

    package tracer交换路由实验成品

    2. **VLAN(虚拟局域网)**:理解VLAN的作用,如何划分VLAN以及配置VLAN间的通信,如配置Trunk和VTP( VLAN Trunking Protocol)。 3. **OSPF(开放最短路径优先)和RIP(路由信息协议)**:了解这两种动态路由协议...

    Fluent_Workbench_Tutorial_Package_2021_R2.zip

    该文档会引导用户从基础操作到高级技巧,包括模型构建、网格划分、边界条件设置、求解器选择、后处理及结果分析等方面。通过一系列实例,读者将了解如何解决各种实际工程问题,如流场分析、传热计算、湍流模拟等。...

    DELPHI.PackAge使用集锦.rar

    5. **Delphi Package 架构下的多人开发环境**:在团队开发中,Package有助于划分任务,每个开发者可以专注于一个或多个Package的开发。通过版本控制工具,可以有效地协同工作,避免冲突,并确保代码的一致性。 6. *...

    NuGet Package Explorer

    NuGet Package Explorer是 ClickOnce 应用程序,允许创建和容易探索 NuGet 程序包。之后安装,您可以双击。nupkg 文件以查看包内容。你还可以直接从官方的 NuGet 饲料加载包。 Nuget是一个.NET平台下的开源的项目,...

    Java中package语句.pdf

    通过合理地划分包,可以将相关的类和接口分组在一起,便于模块化开发和后期的维护。例如,可以将所有模型类放入`model`包,所有的控制器类放入`controller`包,服务类放入`service`包等。 总的来说,`package`语句...

    探索Java世界的地图:深入理解包(Package)

    ### 深入理解Java包(Package) #### Java包的概念 在Java中,包(Package)是一种用于组织类和接口的机制。它不仅有助于避免命名冲突,还能够提高代码的可读性和可维护性。包的基本语法是通过`package`关键字来...

    Java面向对象(基础)-package和import关键字的使用

    - **管理大型软件系统**:通过将功能相似的类放入同一包,可以清晰地划分项目结构,方便团队协作和代码维护。 - **解决命名冲突**:在不同的包中可以定义同名的类,避免了不同模块间因类名重复导致的冲突。 - **...

    TurboGrid_Tutorial_Package_2022_R1.zip

    3. **guide_vane.zip**:这个案例关注的是导叶的网格划分,导叶在涡轮机中起到导向和控制流体流向的作用。用户将学习如何处理叶片边界条件,确保网格在尖端和根部的连续性,同时优化网格密度以精确模拟流动特性。 4...

    codebox-package-editor

    通过研究这些文件,我们可以深入了解编辑器的实现机制,包括其模块划分、数据结构、事件处理等,对于想要自定义或扩展编辑器功能的开发者来说尤为宝贵。 五、实际应用与扩展 codebox-package-editor不仅可以作为...

    TurboGrid_Tutorial_Package.zip

    本教程包“TurboGrid_Tutorial_Package.zip”正是针对ANSYS Turbogrid 2021版本,旨在帮助用户深入理解和掌握这一强大的网格生成工具。 首先,我们关注核心文件“ANSYS_TurboGrid_Tutorials_2021_R2.pdf”,这是一...

    PA FF 中文协议 package 5

    在PROFIBUS网络中,设备之间的通信通常被划分为客户端和服务器的角色。这一部分详细介绍了服务原语、服务时序、并行服务和交互服务的概念,以及它们如何影响通信的效率和可靠性。 #### 3.3.3 应用间的通信关系 ...

    详解python如何引用包package

    - **代码组织**:通过包,可以将相关功能划分为多个子模块,便于管理和维护。 - **命名空间**:包提供了命名空间,避免不同模块间的名称冲突。 - **导入优化**:Python仅在第一次导入时执行包内的`__init__.py`,...

    java入门概念个人理解之package与import浅析

    这样,通过包的划分,可以有效地组织和管理大量的类,使得代码结构更加清晰。 然而,当需要在不同的包之间引用类时,直接使用完整的类名(如`aaa.bbb.ccc.A`)会显得冗长且不便。这时,`import` 语句就派上了用场。...

    4种动物-2d游戏1.0unity3d 资源 UnityPackage包

    7. **场景(Scenes)**:游戏的各个阶段可能被划分为不同的场景,每个场景包含游戏的不同部分或关卡。 8. **物理组件(Physics Components)**:2D游戏通常利用Unity的2D物理引擎,如Collider2D、Rigidbody2D,来...

    TurboGrid_Tutorial_Package_r192.zip

    这个"TurboGrid_Tutorial_Package_r192.zip"压缩包显然是一个关于TurboGrid的教程集合,版本号为r192,可能包含了最新的功能改进或修复。下面我们将深入探讨TurboGrid的主要功能、教程内容以及可能涵盖的知识点。 1...

    Python库 | oh_my_tools_package-0.0.3b52.tar.gz

    1. **模块化**:将功能划分为独立的模块,每个模块负责一部分功能。 2. **文档**:良好的文档是库的重要组成部分,包括README、API文档、示例等,方便用户理解和使用。 3. **测试**:编写单元测试和集成测试以确保...

    SpamDetector_ML_Package.zip

    数据预处理是机器学习的重要环节,可能涉及清理文本(去除HTML标签、停用词、标点符号等)、编码转换(如词袋模型、TF-IDF向量化)以及数据集的划分(训练集、验证集、测试集)。 "models" 文件夹则可能存储训练好...

    python基础-Package基础用法.docx

    Python中的包(Package)是组织和管理大型项目的重要机制,它允许我们将相关的模块(Module)分组到一起,形成一个可导入的结构。在Python中,一个包实际上就是一个包含`__init__.py`文件的文件夹。这个特殊的`__...

    cisco package tracer思科网络培训教程

    1. **配置Cisco交换机**:这部分内容教你如何使用Packet Tracer来设置和管理Cisco交换机,包括基本的接口配置、VLAN划分以及VLAN间通信的建立。 2. **VLAN配置**:VLAN(虚拟局域网)是网络分段的重要手段,能提高...

Global site tag (gtag.js) - Google Analytics