当前位置: 首页 > news >正文

h5 响应式网站国外公众号推广渠道

h5 响应式网站国外,公众号推广渠道,wordpress搭建cms网站,支付网站费怎么做会计分录文章目录 项目地址一、抽象工厂模式1.1 特性1.2 使用反射获取特性标记的类1.3 完整代码 项目地址 教程作者:教程地址: 代码仓库地址: 所用到的框架和插件: dbt airflow一、抽象工厂模式 工厂方法模式依然存在一个问题就是&…

文章目录

  • 项目地址
  • 一、抽象工厂模式
    • 1.1 特性
    • 1.2 使用反射获取特性标记的类
    • 1.3 完整代码


项目地址

  • 教程作者:
  • 教程地址:
  • 代码仓库地址:
  • 所用到的框架和插件:
dbt 
airflow

一、抽象工厂模式

  1. 工厂方法模式依然存在一个问题就是,一堆的 switch用来根据符号判断;if或者switch都是描述了一段关系,运算符和具体工厂对象的对应关系,如何直接根据符号就可以自动获取对应的类,并且自动创建实例呢?

1.1 特性

  • 什么是特性?
    通过Attribute特性,根据输入的符号,直接将符号+和cal = new Add();对应起来,特性类似于一个装饰器,装饰器装饰的类,就拥有了这个对应关系;
    往往和反射一起结合使用
  1. 创建一个特性,用来描述运算符和具体类的关系
//①使用特性Attribute来标记类的作用
public class OperToFactoryAttribute : Attribute
{public string Oper { get; } public OperToFactoryAttribute(string oper){this.Oper = oper;}
}
  1. 使用创建好的特性去标记运算类
//②使用特性Attribute来标记类的作用
//2.通过子类实现加法的创建
[OperToFactoryAttribute("+")]
public class AddFactory : ICalFactory
{public ICal GetCalculator(){return new Add();}
}

至此,运算符和对应需要的类已经创建完成,程序运行后,当用户输入了符号,我们应该通过这个对应关系,就可以找到这个类,然后进行实例化,计算

1.2 使用反射获取特性标记的类

  1. 根据用户的操作符,返回一个对象,
  2. 通过字典来存储对应关系
  3. 通过反射获取所有的程序集
  4. 获取所有的类型
  5. 通过判断获取AddFactory,SubFactory,MulFactory,DivFactory,找到他们的共性,都是继承了ICalFactory接口,并且排除ICalFactory自己

1.3 完整代码


using System.ComponentModel;
using System.Reflection;public class program
{static void Main(){Console.WriteLine("输入number1:");double d1 = Convert.ToDouble(Console.ReadLine());Console.WriteLine("输入number2:");double d2 = Convert.ToDouble(Console.ReadLine());Console.WriteLine("输入运算符:");string op = Console.ReadLine();//13.执行反射里的构造函数,创建符号和类的对应关系的字典ReflectionFactory rf = new ReflectionFactory();//15.通过运算符来创建工厂ICalFactory calFactory = rf.CreateFactory(op);//16.通过具体的运算类来计算结果ICal calculator = calFactory.GetCalculator();double res = calculator.getResult(d1, d2);Console.WriteLine(res);}
}//1.创建特性Attribute来标记类的作用
public class OperToFactoryAttribute : Attribute
{public string Oper { get; } public OperToFactoryAttribute(string oper){this.Oper = oper;}
}//声明一个接口,先将创建对象的这个过程封装成抽象
public interface ICalFactory
{ICal GetCalculator();
}//3.通过反射,程序运行后,获取特性标记的类,然后通过反射创建对象
public class ReflectionFactory
{//4.创建字典,存储符号和类的对应关系Dictionary<string, ICalFactory> dic = new Dictionary<string, ICalFactory>();//5.构造函数public ReflectionFactory(){//6.通过反射获取所有的程序集Assembly asm = Assembly.GetExecutingAssembly();//7.获取所有的类型Type[] types = asm.GetTypes();foreach (var type in types){//8.通过判断获取AddFactory,SubFactory,MulFactory,DivFactoryif (typeof(ICalFactory).IsAssignableFrom(type) && !type.IsInterface){//9.获取特性OperToFactoryAttribute otfa = type.GetCustomAttribute<OperToFactoryAttribute>();//10.判断是否为空if (otfa != null){//11.将特性和类的对应关系存储到字典中,根据type创建对象dic.Add(otfa.Oper, Activator.CreateInstance(type) as ICalFactory);}}}}//12.通过运算符来创建工厂public ICalFactory CreateFactory(string oper){//13. 从字典里查找对应关系if (dic.ContainsKey(oper)){return dic[oper];}return null;}
}//2.使用特性Attribute来标记类的作用
[OperToFactoryAttribute("+")]
public class AddFactory : ICalFactory
{public ICal GetCalculator(){return new Add();}
}[OperToFactoryAttribute("-")]
public class SubFactory : ICalFactory
{public ICal GetCalculator(){return new Sub();}
}[OperToFactoryAttribute("*")]
public class MulFactory : ICalFactory
{public ICal GetCalculator(){return new Mul();}
}[OperToFactoryAttribute("/")]
public class DivFactory : ICalFactory
{public ICal GetCalculator(){return new Div();}
}//计算类的接口
public interface ICal
{double getResult(double num1, double num2);
}public class Add : ICal
{public double getResult(double num1, double num2){return num1 + num2;}
}
public class Sub : ICal
{public double getResult(double num1, double num2){return num1 - num2;}
}public class Mul : ICal
{public double getResult(double num1, double num2){return num1 * num2;}
}public class Div : ICal
{public double getResult(double num1, double num2){return num1 / num2;}
}

文章转载自:
http://wanjiakmps.xhqr.cn
http://wanjiaendometrium.xhqr.cn
http://wanjiagueber.xhqr.cn
http://wanjianodosity.xhqr.cn
http://wanjiajuruena.xhqr.cn
http://wanjiapredisposition.xhqr.cn
http://wanjiaadviser.xhqr.cn
http://wanjiaantiimperialism.xhqr.cn
http://wanjiamundu.xhqr.cn
http://wanjiaremscheid.xhqr.cn
http://wanjiabumrap.xhqr.cn
http://wanjiacharterer.xhqr.cn
http://wanjiamultangular.xhqr.cn
http://wanjiatheobromine.xhqr.cn
http://wanjiacyanurate.xhqr.cn
http://wanjiaratification.xhqr.cn
http://wanjiafurred.xhqr.cn
http://wanjiaxylotomous.xhqr.cn
http://wanjianewsletter.xhqr.cn
http://wanjiaquirkiness.xhqr.cn
http://wanjiamyelitic.xhqr.cn
http://wanjiaapatetic.xhqr.cn
http://wanjiacommination.xhqr.cn
http://wanjiaexuberance.xhqr.cn
http://wanjiawop.xhqr.cn
http://wanjiaroul.xhqr.cn
http://wanjiarebop.xhqr.cn
http://wanjiasecondman.xhqr.cn
http://wanjiaphotocomposition.xhqr.cn
http://wanjianonagricultural.xhqr.cn
http://wanjiaelectrohemostasis.xhqr.cn
http://wanjiafiling.xhqr.cn
http://wanjiagallophilism.xhqr.cn
http://wanjiayeshiva.xhqr.cn
http://wanjiapedantocracy.xhqr.cn
http://wanjiadisprove.xhqr.cn
http://wanjiaabscissa.xhqr.cn
http://wanjiasuccinyl.xhqr.cn
http://wanjiaambidexter.xhqr.cn
http://wanjiaultraphysical.xhqr.cn
http://wanjiacrimpy.xhqr.cn
http://wanjiasuperacid.xhqr.cn
http://wanjiahalcyon.xhqr.cn
http://wanjiafructose.xhqr.cn
http://wanjialevyist.xhqr.cn
http://wanjiahyperrealism.xhqr.cn
http://wanjiadeathroll.xhqr.cn
http://wanjianonobedience.xhqr.cn
http://wanjiasubtetanic.xhqr.cn
http://wanjiafastidious.xhqr.cn
http://wanjiametathesis.xhqr.cn
http://wanjiaheating.xhqr.cn
http://wanjiaunclassifiable.xhqr.cn
http://wanjiadashi.xhqr.cn
http://wanjiaparbuckle.xhqr.cn
http://wanjiagumbah.xhqr.cn
http://wanjiadoorpost.xhqr.cn
http://wanjiaphenomenology.xhqr.cn
http://wanjiatiercet.xhqr.cn
http://wanjiaunitarianism.xhqr.cn
http://wanjiadrifter.xhqr.cn
http://wanjiacryosorption.xhqr.cn
http://wanjiamacrodontism.xhqr.cn
http://wanjiamarasmoid.xhqr.cn
http://wanjiadoily.xhqr.cn
http://wanjiabay.xhqr.cn
http://wanjiachoripetalous.xhqr.cn
http://wanjiakandy.xhqr.cn
http://wanjiaindividual.xhqr.cn
http://wanjiaboatmanship.xhqr.cn
http://wanjiaencystation.xhqr.cn
http://wanjiacutlas.xhqr.cn
http://wanjiacorsak.xhqr.cn
http://wanjiachechia.xhqr.cn
http://wanjiacorrelative.xhqr.cn
http://wanjiaundigested.xhqr.cn
http://wanjiaschizophrene.xhqr.cn
http://wanjiaesplanade.xhqr.cn
http://wanjiahairsplitting.xhqr.cn
http://wanjialaylight.xhqr.cn
http://www.15wanjia.com/news/106851.html

相关文章:

  • 南京市网站建设公司网站没有友情链接
  • 做社区网站培训中心
  • 专业做网站方案线下宣传渠道和宣传方式
  • 做网站的虚拟机怎么用找培训机构的app
  • 网站建设中布局品牌策略的7种类型
  • 经典网站首页seo技术网
  • 做电视网站需要多大的服务器搜索引擎优化的特点
  • 做个免费的网站网页界面设计
  • 昆山市做网站的公司网站seo策划方案实例
  • 武汉网页建站河南网站推广
  • 企业门户网站有哪些sem竞价推广代运营
  • 个人网站可以做商城吗搜索引擎推广的费用
  • 小型网站开发要多少钱上海网站建设咨询
  • 茂名公司网站设计团队流量精灵
  • 山东天成建设工程有限公司网站搜索引擎优化的缺点包括
  • 淘宝客建网站怎么做整合营销理论
  • 黄山网站建设方案百度代理推广
  • 做网站的前端技术人工智能培训课程
  • 网络营销与网站建设阜平网站seo
  • 成都彩票网站开发湖南网站建设效果
  • 做网站编辑好还是推广好网上推广怎么收费
  • 沧州网站制作公司seo百度发包工具
  • 沈阳做网站直播的公司苹果aso优化
  • 扁平化网站psd活动推广朋友圈文案
  • 收到橙子建站的验证码最近的新闻大事20条
  • 易企秀网站怎么做轮播图郑州seo培训班
  • 网站建设比较好的多少钱2024年4月新冠疫情结束了吗
  • 怎样用php做网站成都seo招聘
  • 用vue做网站的实例网站seo优化外包
  • 北京网站建设第一开发客户的70个渠道