重构关注点

  • 遵循开闭原则
  • 面向抽象设计
  • 实现设备程序端可动态配置

C#WinCE程序(.NET Compact Framework 3.5)项目重构面向抽象设计

重构的需求

领导想省事提出需求,将现有PDA程序修改为支持PC端由电器工程师根据实际的生产流程可配置,PDA程序在读取配置文件后动态生成导航界面。然后导航绑定的是PDA程序Dll里的界面。公司的综合赋码管理系统(CMS)作为服务器端对PDA暴露WCF服务,PDA在执行扫描操作后对CMS发起请求,CMS收到请求后匹配分析PDA的请求,分析完再返回执行结果给PDA。场景就是这样一个场景,PDA扫描条码的操作分:扫描一个码,扫描两个码,扫描多个码三种。领导让写3个界面,其实这正好可以抽象一下,相当于1个界面就能搞定;于是设计了一个扫描操作的基类窗体,把扫描的基本操作写在基类里,使用模板设计模式,扫多少个码的界面继承基类重用大部分扫描的处理逻辑。主要流程是PC端通过反射获取PDA程序的Dll里的窗体类列表,外部定义好PDA要展示的功能清单序列化成为Json格式的文件,PC端使用MTP传输到PDA上,PDA读取该文件来动态生成导航界面。

重构的过程

1)定义数据传输对象

using System;
using System.Linq;
using System.Collections.Generic;
using System.Text;

namespace ehsure.Core.Data.dto
{
    [Serializable]
    /// <summary>
    /// 主界面菜单实体类
    /// </summary>
    public class DesignConfig
    {
        /// <summary>
        /// 界面宽度
        /// </summary>
        public int Width { get; set; }
        /// <summary>
        /// 界面高度
        /// </summary>
        public int Height { get; set; }
        /// <summary>
        /// 界面下所有控件
        /// </summary>
        public List<ControlsConfig> ControlsList { get; set; }
    }
}
DesignConfig

相关文章: