美文网首页
软件分类

软件分类

作者: LucXion | 来源:发表于2023-05-19 21:19 被阅读0次
    当我们讨论软件的设计模式的时候,首先应该确定软件的分类:
    1. \color{blue} {应用程序}:最简单,强调复用性(不做多余设计、实现;松散耦合、对象组合;孤立、封装操作)、可维护性(系统分层;限制对平台的依赖(中间层))、可扩展性(松散耦合、对象组合)。

    2.\color{blue} {工具箱、库}:都强调可重用的代码合集,但工具箱和库的规模和功能不一样。
    提供一组特定功能解决特定问题,比如Alamofire库封装网络请求、数据解析。
    工具箱 开发特定类型的应用程序,提供一组可重用的代码、库,比如CocoaPods。

    3.\color{blue} {框架}:半成品软件,提供通用功能和结构,是可复用的设计(一组相互协作的类)。应用对框架的接口变化尤其敏感,框架演化、应用不得不随之演化。任何对框架的实质性修改,都会大大降低框架带来的好处,因为框架对应用最主要的贡献在于它所定义的体系结构。比如UIKit框架。

    在应用程序的开发过程中,接到了一个新的业务模块需求,如何进行设计:
    1. 分析结构:结构影响设计的方方面面,所以当讨论一个需求的结构时,就是找出它的主要功能。比如地图找房的需求,界面分为地图找房和通勤找房,地图分为区域展示和地铁展示。其他设计都是围绕这四点来设计的。

    2. 格式化:分析用到的对象有哪些,它们是如何相互作用的。这就需要进行设计了,会影响目录结构。还是以地图找房为例,界面我使用MVVM的设计模式,VM对象只负责请求房源数据和存储Controller需要的数据,这就需要用到组合对象NetworkManager。Controller负责界面交互,组合的对象有map地图绘制、mapTool地图工具(定位、地理编码/反编码)。因为涉及到地图,所以还有annotationannotationView

    3. 修饰用户界面:将一些扩展功能的按钮、滑块划分为修饰性的。修饰性就需要具备自由增加、删除的特性,且不影响主要功能。这样能够增加代码的扩展性,也能够更多的避免扩展功能引发比较致命的bug。

    4.5. 支持不同的标准、窗口:这在设计功能模块时考虑的比较多,比如接收不同类型的参数,轮播图适配不同的尺寸等等。

    6.用户操作:一些跨界面的交互设计,比如APP"设置"项中的一些通用设置,如何提供一个统一的机制来管理分散的页面。

    7.是否需要添加一个新操作,当我们需要新增一个操作时,如何尽量少的修改相关类,这一点可以结合3来考虑。

    相关文章

      网友评论

          本文标题:软件分类

          本文链接:https://www.haomeiwen.com/subject/pmqmsdtx.html