//N年项目中用过的
//便民终端机器设备工厂模式范例
//读卡器 ( 广东 CRT310 ---深圳TTCE-M100)
//金属加密键盘 ( 深圳柏德盛B6100A --深圳凯明金属加密键盘KMY3501B)
//读卡器抽象类
public abstract class CardRader
{
//初始化
public abstract int init();
//读卡返回卡号
public abstract string ReadID();
//退卡
public abstract void ExitCard();
//....等等其他方法
}
//键盘抽象类
public abstract class Keyboard
{
//初始化
public abstract int init();
//读取密码
public abstract string ReadPwd();
//....等等其他方法
}
//CRT310 读卡器
public class CardRaderCRT310 : CardRader
{
//初始化
public override int init()
{
//...调用厂家方法
// 初始化后设备返回代码
return 1001;
}
//读卡返回卡号
public override string ReadID()
{
//...调用厂家dll方法
//返回读取的卡号
return "62261111111111";
}
//退卡
public override void ExitCard()
{
//...调用厂家dll方法
Console.WriteLine("CRT310退出");
}
//....等等其他方法
}
//M100 读卡器
public class CardRaderM100 : CardRader
{
//初始化
public override int init()
{
//...调用厂家dll方法
// 初始化后设备返回代码
return 1001;
}
//读卡返回卡号
public override string ReadID()
{
//...调用厂家dll方法
//返回读取的卡号
return "62261111111111";
}
//退卡
public override void ExitCard()
{
//...调用厂家dll方法
Console.WriteLine("M100退出");
}
//....等等其他方法
}
//密码键盘 B6100A
public class KeyboardB6100A : Keyboard
{
//初始化
public override int init()
{
//...调用厂家dll方法
return 1;
}
//读取密码
public abstract string ReadPwd()
{
//...调用厂家dll方法
//加密字符串--键盘的密码都是键盘自动加密的,需要以报文的形式发送银行验证
return "jjjjjjjklsjkdlfjskldfjls";
}
//....等等其他方法
}
//密码键盘 KMY3501B
public class KeyboardKMY3501B : Keyboard
{
//初始化
public override int init()
{
//...调用厂家dll方法
return 1;
}
//读取密码
public abstract string ReadPwd()
{
//...调用厂家dll方法
return "adsadsasdasd"; //加密字符串
}
//....等等其他方法
}
//工厂--创建读卡器
public abstract class CardRaderAbstractFactory
{
public abstract CardRader CreateCardRader();
}
public class CardRaderCRT310Factory : CardRaderAbstractFactory
{
public override CardRader CreateCardRader()
{
return new CardRaderCRT310();
}
}
public class CardRaderM100Factory : CardRaderAbstractFactory
{
public override CardRader CreateCardRader()
{
return new CardRaderM100();
}
}
//工厂--键盘
public abstract class KeyboardAbstractFactory
{
public abstract Keyboard CreateKeyboard();
}
public class KeyboardB6100AFactory : KeyboardAbstractFactory
{
public override Keyboard CreateKeyboard()
{
return new KeyboardB6100A();
}
}
public class KeyboardKMY3501BFactory : KeyboardAbstractFactory
{
public override Keyboard CreateKeyboard()
{
return new KeyboardKMY3501B();
}
}
---------------------------------------------------------------------------
CardRaderAbstractFactory crFactory = new CardRaderCRT310Factory();
CardRader cardReder =crFactory.CreateCardRader();
cardReder.init();
cardReder.ReadID();
//。。。。
KeyboardAbstractFactory kbFactory = new KeyboardB6100AFactory();
Keyboard keyboard = kbFactory.CreateKeyboard();
keyboard.init();
/....