问题一:如何为日后维护升级提供便捷性。
解决方式:简单工厂设计模式
设计思路:
实现方法:
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();
实现前:每次的切换窗体没将关闭的窗体进行资源释放
实现后:每次调用完都可以进行回收,释放资源。
方法比较低级不好用,下次继续更新。