java更改包名称

即使只是少量更改角度,也可能对您如何使用系统产生深远影响。
假设您正在用Java编写Web应用程序。 在系统中,您处理订单,客户和产品。 作为一个Web应用程序,您的类包括诸如Controller,PersonRepository,CustomerController和OrderService之类的订书钉。 您如何将课程组织成包?
有两种基本的方法来构建软件包。 您可以专注于逻辑层,例如com.brodwall.myapp.controllers,com.brodwall.myapp.domain或com.brodwall.myapp.services.customer。 或者,您可以专注于域上下文,例如com.brodwall.myapp.customer,com.brodwall.myapp.orders和com.brodwall.myapp.products。 迄今为止,第一种方法最为普遍。 在我看来,它也是最没有帮助的。
如果围绕领域概念而不是技术层来构造软件包,则可以通过以下几种方式改变思维:
首先,也是最根本的,您的思维模型现在将与系统用户的思维模型保持一致。 如果要求您实现典型功能,那么现在很可能将重点放在系统软件包的严格子集中。 例如,向表单添加新字段将至少影响相应域概念的表示逻辑,实体和持久层。 如果您的软件包按层组织,则此更改将影响您的整个系统。 一句话:围绕功能而非技术组织的系统具有更高的一致性。 这个技术术语意味着一个类的大部分依赖项都位于该类的附近。
其次,随着软件的发展,围绕领域概念进行组织将为您提供更多选择。 当一个包包含数十个类时,您可能需要将其拆分为几个包。 讨论本身可以启发人。 “也许我们应该将客户地址类别分离到com.brodwall.myapp.customer.address包中。 它似乎有自己的生活。” “是的,也许我们可以在需要地址的其他地方使用相同的类,例如供应商?” “很酷,那么com.brodwall.myapp.address呢?” 或者,您可以确定应该将订单状态代码和付款状态代码放在“ com.brodwall.myapp.order.codes”包中。
另一方面,您有什么选择拆分com.brodwall.myapp.controllers? 您可以为客户,订单和产品创建子包,但是这些子包可能只具有一个或两个类。
最后,也许是最有趣的是,对包使用领域概念可以使您根据具体情况改变设计。 也许您确实需要一个OrderService来协调订单的付款和运输,而ProductController仅需要带有存储库的基本create-retrieve-update-delete功能。 一个ProductService只会给您带来麻烦。 如果com.brodwall.myapp.services包中缺少ProductService,这可能会造成混淆,或者至少会给您带来麻烦的感觉,那就是出现了问题。 另一方面,如果com.brodwall.myapp.product程序包中没有Controller,则没关系。
而且,大多数系统都有一些不错的零件,而有些则不太好。 如果您的服务包对您不起作用,那么您将无能为力。 但是,如果“产品”程序包烂了,您可以将其丢弃并重新实现它,而不会使整个系统陷入混乱状态。
通过将实现某个功能所需的类彼此放在一起,并与实现其他功能所需的类分开,开发人员在开发一个功能时可以务实和创新,而不会负面影响其他功能。
不利的一面是,大多数开发人员对应用程序中的某些技术更满意,而对其他技术则较不满意。 围绕功能而非技术进行组织会迫使每个开发人员考虑更多的技术挑战。 一些程序员将其视为学习的动力,而其他程序员似乎宁愿不必学习新知识。
如果花我的钱来创建功能,我就知道我想要什么样的开发人员。
细微的变化会产生很大的影响。 通过围绕功能组织软件,您可以获得一个更加一致的系统,可以进行扩展。 它可能会给您的开发人员带来挑战,但会降低实现功能所需的交接数量,并会挑战开发人员改善他们正在处理的应用程序部分。
参考: Java 合伙人 Johannes Brodwall在“ 更大的盒子里的思考”博客中的更改Java包名称如何改变了我的系统架构 。

翻译自: https://www.javacodegeeks.com/2012/07/how-changing-java-package-names.html

java更改包名称

java更改包名称_更改Java包名称如何改变我的系统架构相关推荐

  1. java项目----教务管理系统_基于Java的教务管理系统

    java项目----教务管理系统_基于Java的教务管理系统 2022-04-22 18:18·java基础 最近为客户开发了一套学校用教务管理系统,主要实现学生.课程.老师.选课等相关的信息化管理功 ...

  2. 更改Java包名称如何改变我的系统架构

    即使只是少量更改角度,也可能对您如何使用系统产生深远影响. 假设您正在用Java编写Web应用程序. 在系统中,您处理订单,客户和产品. 作为Web应用程序,您的类包括诸如Controller,Per ...

  3. java socket 包头包体_使用JAVA上抓取Socket服务端和客户端通信TCP数据包

    使用Java抓取Socket通信TCP数据包 使用WireShark默认使用的是winpcap去抓本地环回的数据包,需要安装npcap再在Wireshark选择本地环回的网卡抓包 在Java-Sock ...

  4. java设置系统环境变量_设置java 环境变量

    DOS下任意目录用JAVA,JAVAC肯定是显示正确咯,因为你设置好了JAVAlib和bin的但是JAVA文件需要DOS下CD好了目录才能JAVAC否则是在C:\program里查找该JAVA文件你任 ...

  5. java是什么格式_是java格式

    错误:编码GBK的不可映射字符的解决办法 最近在重新补javaSE的基础,编辑器编写完代码以后,在控制台运行代码段的时候,出现了以下的错误提示:错误:编码GBK的不可映射字符 在通过查询谷哥和度娘以后 ...

  6. java 不重启部署_编译Java类后不重启Tomcat有两种方式:热部署、热加载

    不重启Tomcat有两种方式:热部署.热加载 热部署:容器状况在运行时重新部署整个项目.这类环境下一般整个内存会清空,重新加载,这类方式 有可能会造成sessin丢失等环境.tomcat 6确实可以热 ...

  7. java引用 弱引用_了解Java弱引用

    java引用 弱引用 我最近没来得及关注这个博客,最重要的是,我没有为与技术界的所有人保持联系而致歉. 最近,我偶然发现了自Java 1.2起可用的java.lang.ref软件包,但具有讽刺意味的是 ...

  8. JAVA解决实例问题_解决java方法

    没有R.java问题找不到getActionBar()方法 android项目,可是项目中没有重要的R.java,并且报错,说是找不到getActionBar()方法,上网寻找原因,终于寻得解决方法: ...

  9. java打印星型_初识java java入门知识 基础知识 打印各种星型图形 源代码

    今天给大家带来的是初级Java基础部分的知识:包括初识Java.变量.常量.数据类型.运算符.各种选择结构.循环结构.数组等Java的基础语法部分!最后还有****循环结构的进阶****,步骤超详细, ...

最新文章

  1. weblogic mime-type
  2. CTFshow php特性 web130
  3. mysql 衍生表必须有别名_MySQL“每个派生表必须有自己的别名”
  4. 高性能mysql 第六章_第六章 查询性能优化
  5. ant构建项目迁移到gradle_Gradle构建工具
  6. cannot convert ‘_IO_FILE*’ to ‘const char*
  7. Linux服务器的初步配置流程
  8. birt脚本for循环语句_如何使用 for 循环语句嵌套方法!
  9. python replace替换多个字符_关于python:使用string.replace(x,y)替换所有
  10. 用指针交换两个数_C语言100题集合026-使用指针交换两个数组中的最大值
  11. POJ读书笔记2.1 —— 鸡兔笼带
  12. 视频教程-C++Windows之WDM驱动程序开发(实战篇)上-驱动/内核开发
  13. c语言调试过程中的错误,C语言调试过程中duplicate symbol错误分析
  14. 计算机网络合集(除应用层之外)
  15. Mac蒲公英sh脚本上传app
  16. MATLAB读取nc格式数据并可视化显示(以海面风场反演为例)
  17. python中partial的使用规则
  18. 这帮死磕技术的理工男造了一支笔
  19. 使用python计算贝尔宾团队角色测评结果
  20. H5实现无插件视频监控按需直播

热门文章

  1. 百度三轮面试回来,想和Java程序员分享一下。
  2. Java 常见的 30 个误区与细节
  3. 走的走的居然飞起来了……
  4. 《走遍中国》珍藏版(一)
  5. 动态网页开发基础【笔记】
  6. Map的两种遍历方法
  7. Android build.gradle(app)介绍
  8. 2019最新 Java商城秒杀系统的设计与实战视频教程(SpringBoot版)
  9. 用户模块开发 分类模块 商品模块 购物车模块
  10. html5中 save方法,如何HTML5画布另存为窗口8 Metro应用中的图像文件?(How to save html5 c...