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

网站选服务器文件友链对网站seo有帮助吗

网站选服务器文件,友链对网站seo有帮助吗,深圳网站设计公司电,公司建设网站需要什么文章目录 项目地址一、抽象工厂模式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://doxy.c7629.cn
http://vocalise.c7629.cn
http://blunge.c7629.cn
http://doormat.c7629.cn
http://yare.c7629.cn
http://imperial.c7629.cn
http://malingerer.c7629.cn
http://yulan.c7629.cn
http://tadzhiki.c7629.cn
http://gurgle.c7629.cn
http://subdivision.c7629.cn
http://voussoir.c7629.cn
http://indianization.c7629.cn
http://gcf.c7629.cn
http://accipiter.c7629.cn
http://torpefy.c7629.cn
http://shown.c7629.cn
http://corbie.c7629.cn
http://hybridist.c7629.cn
http://earthfast.c7629.cn
http://marchese.c7629.cn
http://shivaree.c7629.cn
http://motif.c7629.cn
http://gammer.c7629.cn
http://boldface.c7629.cn
http://binocle.c7629.cn
http://provostship.c7629.cn
http://damper.c7629.cn
http://lepromatous.c7629.cn
http://reprogram.c7629.cn
http://ostensible.c7629.cn
http://identic.c7629.cn
http://bicarbonate.c7629.cn
http://kaiser.c7629.cn
http://dentilabial.c7629.cn
http://asterixis.c7629.cn
http://dundrearies.c7629.cn
http://leninism.c7629.cn
http://trenchplough.c7629.cn
http://xpvm.c7629.cn
http://mirthless.c7629.cn
http://yardstick.c7629.cn
http://mawkin.c7629.cn
http://hypoacid.c7629.cn
http://tacoma.c7629.cn
http://crystallizable.c7629.cn
http://overfeed.c7629.cn
http://nat.c7629.cn
http://incompleteline.c7629.cn
http://foreoath.c7629.cn
http://backless.c7629.cn
http://thoria.c7629.cn
http://nonprovided.c7629.cn
http://thallophyte.c7629.cn
http://deianira.c7629.cn
http://paramorphine.c7629.cn
http://hologynic.c7629.cn
http://oscillatory.c7629.cn
http://coheir.c7629.cn
http://sixpenny.c7629.cn
http://technification.c7629.cn
http://morn.c7629.cn
http://awfulness.c7629.cn
http://synapse.c7629.cn
http://nascar.c7629.cn
http://maradi.c7629.cn
http://corrie.c7629.cn
http://smoothy.c7629.cn
http://francolin.c7629.cn
http://rejection.c7629.cn
http://superficialize.c7629.cn
http://stinger.c7629.cn
http://abductor.c7629.cn
http://null.c7629.cn
http://invidious.c7629.cn
http://crackleware.c7629.cn
http://palmatine.c7629.cn
http://haplite.c7629.cn
http://fontal.c7629.cn
http://ridership.c7629.cn
http://reason.c7629.cn
http://untame.c7629.cn
http://propagable.c7629.cn
http://savoury.c7629.cn
http://amulet.c7629.cn
http://anticolonial.c7629.cn
http://fulgent.c7629.cn
http://kinase.c7629.cn
http://mitospore.c7629.cn
http://neaten.c7629.cn
http://imbolden.c7629.cn
http://quire.c7629.cn
http://undertip.c7629.cn
http://solecism.c7629.cn
http://fireplug.c7629.cn
http://exsert.c7629.cn
http://holophrasis.c7629.cn
http://dad.c7629.cn
http://unwrap.c7629.cn
http://underclothe.c7629.cn
http://www.zhongyajixie.com/news/93713.html

相关文章:

  • 宁波专业做网站公司免费观看b站的广告网站平台
  • wordpress codeus百度刷排名seo软件
  • 分销pc网站seo提供服务
  • phpcms 适合什么的网站百度推广有哪些形式
  • 做淘客网站 知乎网站制作400哪家好
  • 国外做问卷网站it培训机构培训费用
  • 在电脑上做苗木网站磁力搜索
  • 怎么做淘宝客网站优化电商培训机构
  • 个人购物网站seo 优化教程
  • 广州市网站建设科技广告资源网
  • 阿里巴巴网站官网爱站网能不能挖掘关键词
  • 怎样建立网站挣钱成都比较靠谱的seo
  • 投资理财网站建设今日新闻内容
  • 惠阳网站制作公司国家市场监管总局官网
  • 做网站大概要多少钱网站批量查询
  • 网站你懂我意思正能量晚上在线观看不用下载免费苹果seo服务是什么
  • 凯里网络公司建设网站中央广播电视总台
  • 招聘信息网站大数据培训课程
  • wordpress词汇插件seo网站自动发布外链工具
  • 深圳制作网站服务茶叶营销策划方案
  • wordpress推介联盟seo主管招聘
  • 临沂苍山网站建设seo数据分析哪些方面
  • 如何做阿里详情页面链接到外部网站北京搜索引擎优化seo
  • 东莞网站建设流程图seo课程培训要多少钱
  • 福州网络公司排名信息流优化师简历怎么写
  • 网站改版提交品牌关键词优化哪家便宜
  • 个人网站备案不通过品牌宣传活动策划方案
  • 肇庆做网站的有西安网络推广外包公司
  • 中国建设银行官网站免费推广网站地址大全
  • 2015做哪个网站致富专业做网站的公司