工厂模式

//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(); /....

 

posted @ 2016-03-17 16:30  幽谷清水  阅读(292)  评论(0编辑  收藏  举报