UML和模式应用读书笔记二(包&层)


这是从原书中第12章到后面的读书笔记,对于前面的读书笔记及思考参见 UML和模式应用读书笔记二(做正确的事)

0x2B | ~0x2B
–Hamlet
上面的答案是0xFF

logical architecture是软件类的宏观组织结构,他将软件类组织为包,子系统和层等.

layer是对类,包或子系统的粗粒度分组,

OO系统的层一般包括用户界面,应用逻辑和逻辑对象,技术服务(数据库和日志)三层

严格的分层架构中,层只能调用与其相邻的下层服务.这种设计在网络协议栈中比较常见,而在信息系统中不太常见.在信息系统中通常使用宽松的分层架构,其中较高层可以调用其下任何层的服务.

有的时候我们的确需要反向传递信息(例如通知GUI窗口对象改变颜色,这个时候就通过观察者模式,由GUI监听来实现)

从UI层发送到领域层的消息是将SSD中所描述的消息,例如enterItem

在开发过程的早期,我们会画出UML包图的草图,然后根据这些草图来组织代码.随着时间的流逝,代码库不断增长,同时我们在编程上花费的时间更多,并减少了建模或绘制UML图的时间.此时,可以利用UML CASE工具对源代码进行逆向工程,从而自动生成包图

内部嵌套包的表示

在这里插入图片描述

分包demo

//—UI层
com.mycompany.nextgen.ui.swing
com.mycompany.nextgen.ui.web
//—领域层
com.mycompany.nextgen.domain.sales
com.mycompany.nextgen.domain.payments
//—技术服务层
com.mycompany.service.persistence
//—第三方
org.apache.log4j
org.apache.soap.rpc
//—基础层
com.mycompany.util

注意上面有些包名带了nextgen,有些没有

分包原则

relational cohesion=内部关系的数量/类型的数量

分解为稳定和不稳定的两个子集

在早期迭代阶段确定良好的包结构是非常困难的,通常,包结构会随着细化迭代的深入不断进行演化,这也应该是细化阶段的目标(因为包结构具有重要架构意义),当细化阶段结束时大部分包结构将会稳定化

包之间循环依赖的方案

  • 将循环分解出来作为较小的包
  • 使用接口

增强包稳定的方法

-仅包含或主要包含接口和抽象类

  • 不依赖其他包
  • 稳定代码,经过充分测试
  • 强制规定具有缓慢变化周期

有一个族接口组成的包

将一组功能相关的接口放入单独的包,与其实现类分离.接口的实现放在单独的包总

我个人不是很赞同这种方案

最底层

文中建议不要将一些外部资源或服务放到逻辑中低于基础层的地方,因为他们不属于任何逻辑层,层大致上只有上面那几种
在这里插入图片描述

层之间的耦合

  • 所有较高层都依赖于技术服务层和基础层
  • 领域层依赖于基础设置层
  • UI层调用应用层,应用层调用领域层.除非没有应用层,UI层不直接调用领域层
  • 对于单进程的"桌面"应用,领域层的软件对象对于UI层,应用层可见,或者在上述各层之间传递
  • 在分布式系统中,通常将领域对象序列化副本(value object)传递给ui层.在此情形下,领域层部署在服务器,客户节点得到副本

应用层

在某些应用中,并不需要应用层.当下属情形发生时,应用层具有效用

  • 系统使用多个用户接口.(例如web页面和swing gui),应用层对象可以充当负责收集和合并不同用户接口数据的适配器,同时充当隐藏对领域层访问的外观
  • 在分布式系统,领域层和ui层在不同节点
  • 领域层不能活不应该维护会话状态
  • 通过限定窗口或web页面的顺序定义了工作流,并且必须表示这一工作流

总的看来,应用层就是Controller?

层的禁忌

  • 会导致性能问题
  • 可以使用pipes和filter代替,特别是变换顺序可以改变时
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
UML(Unified Modeling Language,统一建模语言)是一种常用的软件工程建模语言,它通过图形化的表示方法来描述软件系统的结构、行为和交互等方面,有助于开发人员更好地理解系统的设计和实现。而模式(Design Pattern)则是一套被广泛应用于软件设计中的经验总结,它提供了一些可重复使用的解决方案来解决常见的软件设计问题。 在在线阅读领域UML模式都扮演着重要的角色。首先,使用UML可以帮助开发人员对在线阅读系统进行全面的建模和设计。例如,可以使用UML类图来描述系统的数据模型,显示各个类之间的关系和属性。此外,可以使用UML活动图来描述在线阅读的流程,例如用户注册、书籍搜索和阅读等。通过使用UML,开发人员可以更好地理解系统的结构和功能,从而更高效地进行开发工作。 同时,模式应用也能带来许多好处。在线阅读系统面临很多常见的设计问题,例如用户管理、权限控制、缓存管理等。通过应用合适的设计模式,可以提供一套经过验证的解决方案,避免重复劳动和低效的设计。例如,可以使用享元模式来减少系统中重复的对象,提高系统的性能和资源利用率;还可以使用策略模式来实现不同访问权限的控制,提供灵活的用户管理。 总之,UML模式应用对于在线阅读系统的设计和开发非常重要。通过使用UML建模和描述系统,可以帮助开发人员更好地理解系统的结构和功能。而模式应用则可以提供一套经过验证的解决方案,避免重复劳动和低效的设计。通过综合运用这两者,可以提高在线阅读系统的设计质量和开发效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值