设计模式
什么是设计模式
- 设计模式是人们在开发中遇到的共性问题而提出的一个解决方案
- 比如说:孙子兵法中的各种策略其实就是针对某种情况的经验总结
- 程序开发中的设计模式只是一种参考,而不是一成不变
常见设计模式
- 简单工厂模式(典型应用:解决单一对象创建的扩展问题)
- 抽象工厂模式(典型应用:解决多种类型数据库访问问题或不同业务逻辑)
- 单例模式(典型应用:在WEB开发中,设计购物车的时候)
现实开发中遇到的问题
- 某个项目中需要一个打印报表程序,但是该项目的用户可能使用多种报表形式,比如有些企业使用Excel报表,有些企业使用直接设计报表,有些企业使用Word报表,还有些企业可能使用其他报表组件
- 项目要求设计至少三种报表模块,项目发布后只需要修改一下配置信息则即可满足不同用户的报表需求
解决方案
- 因为设计到系统问题,考虑使用接口设计报表模块
- 同一个需求有不同表现,符合多态的应用条件
简单工厂模式
简单工厂模式的原理
- 工厂通过“选择”的方法来指定应该创建哪个“接口实现类的对象”
- “工厂”其实就是一个对象创建的方法,让对象“延迟创建”
简单工厂中存在的问题
如果用户的需求再次提出来更新,要新加其他的报表类型,需要修改工厂中的代码,违反了面向对象中的“开-闭原则”
反射技术
概念
反射(Reflection)是.NET中的一个重要的技术,通过反射,可以在运行时获得某个类型的各种信息,包括方法、属性、事件、及构造函数等,还可以获得每个成员的名称等信息
特点
在程序运行时,动态创建对象、调用方法、设置属性、激发事件,而不是在编译的时候完成
反射的应用
- VS中的只能提示、使用MSIL反编汇工具查看IL代码都是使用反射技术
- Java开发工具Eclipse中的插件使用也都是反射技术
开发中的应用
- 系统需要基于插件开发的时候,必须要使用反射
- 在简单工厂和抽象工厂设计模式的时候需要使用反射技术
- 使用反射一般都要配合接口的使用
- 反射技术使得系统性能有一定程度的降低,除非是必要情况,否则不宜使用过多
接口框架
基于接口设计三层架构
开发团队协作保障
- 项目命名、模块命名、类编写要求规范、注释要求…
- 数据库设计规范:表的命名、实体属性命名、约束…
- 项目开发中协作的形式:垂直分工、并行开发。
垂直分工:
- 任务分工:按照功能模块
- 技术要求:要求开发人员必须要熟悉项目各模块(DAL/BLL/UI)编写
- 应用场合:中小型项目,且开发团队力量比较小
- 现实比较:类似于小企业的“作坊式”生产
并行开发:
- 任务分工:按照软件的实现模块(业务逻辑、数据访问、视图、通用…)
- 技术要求:要求开发法人员只需要熟练掌握自己对应的模块技术
硬件接口应用
接口设计和产品生产
- 硬件接口的应用使得不同厂商可以专注生产自己最擅长的产品
- 产品的组成=不同的硬件接口+接口产品
接口的任务控制所有的产品厂商生产的产品是保持有同一的一个接口,让厂商更专注于自己的产品质量问题,不需要纠结通用的一些问题
接口三层优点和缺点
优点:
- 很好的解决并行开发中的团队协作问题
- 系统的可扩展性进一步增强,当增加新的功能点时,接口层和实现层可以轻松的同步修改,各自完全独立工作,互不影响
- 适合于项目较大和开发人员较多时采用
缺点:
- 增加框架的设计难度和开发的工作量
- 项目较小时不宜采用
基于接口设计、除了三层架构之外其他架构设计也完全可以使用
接口的使用与否,取决于开发团队和项目的实际需求,而不是为了使用接口而引入接口
开发中框架的选择
基础框架
小型项目、功能简单、个人开发,项目周期短
两层框架
小型项目、功能稍多,个人开发或团队开发,项目周期适中
三层架构
大、中型项目,功能多,专业团队开发,项目周期长
接口三层
大、中型项目,功能繁多,专业团队并行开发,项目周期长