非诚勿扰11号女嘉宾,天字一号下载,nc6400拆机
简单工厂模式(simple factory pattern)的优点是,工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖
客户实例化对象时不需要关心该对象是由哪个子类实例化的。
1、简单工厂模式结构
iproduct接口:抽象产品类
concreteproduct类:产品类的具体实现
simple factory简单工厂类
1、场景
一个简单计算器,具有简单的加操作和减操作。结构如下图所示
simplefactory:简单工厂类。
operation:抽象操作类
addoperation:加法操作
suboperation:减法操作
2、代码
1、抽象操作类operation,及其具体实现类addoperation、suboperation
/// <summary> /// 抽象操作类 /// </summary> public abstract class operation { public int numbera; public int numberb; public abstract int getresult(); } /// <summary> /// 加法操作 /// </summary> public class addoperation: operation { public override int getresult() { return (this.numbera + this.numberb); } } /// <summary> /// 减法操作 /// </summary> public class suboperation: operation { public override int getresult() { return (this.numbera - this.numberb); } }
2、简单工厂类simplefactory
/// <summary> /// 简单工厂类 /// </summary> public class simplefactory { public static operation createoperation(string operation) { operation o = null; switch (operation) { case "+": o = new addoperation(); break; case "-": o = new suboperation(); break; } return o; } }
3、客户端代码
static void main(string[] args) { operation operation1 = simplefactory.createoperation("+"); operation1.numbera = 10; operation1.numberb = 20; console.writeline("{0}+{1}={2}", operation1.numbera, operation1.numberb, operation1.getresult()); operation operation2 = simplefactory.createoperation("-"); operation2.numbera = 10; operation2.numberb = 20; console.writeline("{0}-{1}={2}", operation2.numbera, operation2.numberb, operation2.getresult()); console.read(); }
3、实例运行结果
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Blazor server side 自家的一些开源的, 实用型项目的进度之 CEF客户端
.NET IoC模式依赖反转(DIP)、控制反转(Ioc)、依赖注入(DI)
vue+.netcore可支持业务代码扩展的开发框架 VOL.Vue 2.0版本发布
网友评论