这几天对老的条码打印模块进行优化,优化过程简述如下
这是老的模块的类结构示意图
如果打印机类型或标签增加,标签类将成倍,容易造成类爆炸, 因此 ,使用泛型,进行如下优化
接口 Iprint 代码如下
public interface Iprint<T> where T:I打印机, new()
{
void pring(STUpringData data);
}
虚基类 printbase 代码如下
public abstract class printbase<T> : Iprint<T> where T:I打印机,new()
{
.............
}
这样,不会造成类爆炸,降低了耦合性,
另外,添加了一个结构放置数据,这样,添加打印数据,不会影响接口,提高可维护性。数据 方法 分离
最后,
添加统一调用方法,封装成组件
public static void print(string printertype, string labeltype, STUpringData data)
{
WindowsFormsApplication2.Iprint<WindowsFormsApplication2.ZPL打印机> priz = null; ;
WindowsFormsApplication2.Iprint<WindowsFormsApplication2.APL打印机> pria = null; ;
switch (printertype)
{
case "zpl":
switch (labeltype)
{
case "c":
priz = new WindowsFormsApplication2.产品标签<WindowsFormsApplication2.ZPL打印机>();
break;
case "b":
priz = new WindowsFormsApplication2.备件标签<WindowsFormsApplication2.ZPL打印机>();
break;
case "h":
priz = new WindowsFormsApplication2.耗材标签<WindowsFormsApplication2.ZPL打印机>();
break;
}
priz.pring(data);
break;
case "apl":
switch (labeltype)
{
case "c":
pria = new WindowsFormsApplication2.产品标签<WindowsFormsApplication2.APL打印机>();
break;
case "b":
pria = new WindowsFormsApplication2.备件标签<WindowsFormsApplication2.APL打印机>();
break;
case "h":
pria = new WindowsFormsApplication2.耗材标签<WindowsFormsApplication2.APL打印机>();
break;
}
pria.pring(data);
break;
}
}