医学信息学作业-门诊医生工作站(2)

问题一:如何为日后维护升级提供便捷性。

解决方式:简单工厂设计模式

设计思路:

实现方法:

1、项目包括的三个窗体都继承于UserControl父窗体。

public partial class Regestrion : UserControl
public partial class OutPatient : UserControl
public partial class Chasier : UserControl

2、创建工厂类

2.1工厂类中创建静态方法,避免工厂类使用过程中的重复实例化。在工程类中静态方法中创建UserControl类型,对不同选择进行对象创建。

class Factory
    {
        public static UserControl Choose(int index)     //简单工厂模式
        {
            UserControl user = null;
            switch (index)
            {
                case 0:
                    user = new Regestrion();
                    break;
                case 1:
                    user = new OutPatient();
                    break;
                case 2:
                    user = new Chasier();
                    break;
            }
            return user;
        }
    }

2.2登录模块只需为工厂类提供索引参数。

form.panel1.Controls.Clear();
user = Factory.Choose(comboBox1.SelectedIndex);     //简单工厂
user.Parent = form.panel1;
user.Dock = DockStyle.Fill;

问题二:反复切换子窗体时,窗体占用资源的释放与回收。

解决方式:GC强制回收。

实现代码:

创建退出方法并对资源强制回收。

public void logout()
        {
            user.Dispose(); //退出账户时可以进行内存释放
            GC.Collect();   //强制回收内存
        }

主窗体中退出功能事件触发该方法:

login1.logout();    //退出按钮触发退出方法
panel1.Controls.Clear();

实现前:每次的切换窗体没将关闭的窗体进行资源释放

实现后:每次调用完都可以进行回收,释放资源。

方法比较低级不好用,下次继续更新。

猜你喜欢

转载自blog.csdn.net/qq_39458250/article/details/89177050