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

做网站能拿多少钱网络营销专家

做网站能拿多少钱,网络营销专家,济宁专业做网站,初二信息课网站怎么做文章目录 委托自定义委托模板方法(工厂模式回调(callback)函数(观察者模式多播(multicast)委托委托的高级使用使用接口 重构 模板方法代码注意参考 委托 委托(delegate)是一种类型,定义了一种方…

文章目录

  • 委托
  • 自定义委托
  • 模板方法(工厂模式
  • 回调(callback)函数(观察者模式
  • 多播(multicast)委托
  • 委托的高级使用
  • 使用接口 重构 模板方法代码
  • 注意
  • 参考


委托

委托(delegate)是一种类型,定义了一种方法签名,因此可以将方法作为参数进行传递。
委托类似于 C++ 中的函数指针,但比函数指针更加安全和灵活。
使用委托,可以实现事件处理、回调函数等功能。
建议:使用接口取代委托

  • Action
    • 无参无返回
  • Func
    • 有参有返回
        Calaculator calaculator = new Calaculator();// Actionnew Action(calaculator.Report).Invoke();// FuncFunc<int, int, int> func1 = new Func<int, int, int>(calaculator.Add);Func<int, int, int> func2 = new Func<int, int, int>(calaculator.Sub);int x = 100;int y = 200;int z = 0;// 可以省略invokez = func1(x, y);Console.WriteLine(z);z = func2.Invoke(x, y);Console.WriteLine(z);class Calaculator {public void Report(){Console.WriteLine("i have 3 methods");}public int Add(int a, int b){return a + b;}public int Sub(int a, int b){return a - b;}
}

自定义委托

// 与类平级,放到类中属于嵌套
public delegate double Calc(double x,double y);
internal class Program
{static void Main(string[] args){Calaculator calaculator = new Calaculator();Calc calc1 = new Calc(calaculator.Add1);Calc calc2 = new Calc(calaculator.Mul);double x = 100;double y = 100;double z = 0;z = calc1.Invoke(x, y);Console.WriteLine(z);z = calc2.Invoke(x, y);Console.WriteLine(z);}
}

模板方法(工厂模式

”借用“指定的外部方法来产生结果 , 提高对代码的复用
ProductFactory() 只需要扩展这个方法,其他方法都不用动

    static void Main(string[] args){ProductFactory productFactory = new ProductFactory();WrapFactory wrapFactory = new WrapFactory();Func<Product> func1 = new Func<Product>(productFactory.MakeToy);Func<Product> func2 = new Func<Product>(productFactory.MakePizza);Box box1 = wrapFactory.WrapProduct(func1);Box box2 = wrapFactory.WrapProduct(func2);Console.WriteLine(box1.Product.Name);Console.WriteLine(box2.Product.Name);}
}class Product() { public string Name { get; set; }
}class Box() { public Product Product { get; set; }
}class WrapFactory {public Box WrapProduct(Func<Product> getProduct) {Box box = new Box();// invoke 执行拿到产品(不用管是什么产品Product product = getProduct.Invoke();box.Product = product;return box;}
}class ProductFactory() {public Product MakePizza() {Product product = new Product();product.Name = "Pizza";return product;}public Product MakeToy() {Product product = new Product();product.Name = "Toy";return product;}
}

回调(callback)函数(观察者模式

调用指定的外部方法
在模板方法基础上添加

internal class Program
{static void Main(string[] args){ProductFactory productFactory = new ProductFactory();WrapFactory wrapFactory = new WrapFactory();Func<Product> func1 = new Func<Product>(productFactory.MakeToy);Func<Product> func2 = new Func<Product>(productFactory.MakePizza);Logger logger = new Logger();Action<Product> action = new Action<Product>(logger.Log);Box box1 = wrapFactory.WrapProduct(func1,action);Box box2 = wrapFactory.WrapProduct(func2,action);Console.WriteLine(box1.Product.Name);Console.WriteLine(box2.Product.Name);}
}class Logger {public void Log(Product product) {//DateTime.UtcNow 无时区时间 ; DateTime.Now 有时区Console.WriteLine("Product '{0}' created at {1}.Price is {2}",product.Name,DateTime.UtcNow,product.Price);}
}class Product() { public string Name { get; set; }public double Price{ get; set; }
}class Box() { public Product Product { get; set; }
}class WrapFactory {public Box WrapProduct(Func<Product> getProduct,Action<Product> logCallback) {Box box = new Box();Product product = getProduct.Invoke();// 回调函数:触发某种条件就自动执行if (product.Price >= 50) {logCallback(product);}box.Product = product;return box;}
}class ProductFactory() {public Product MakePizza() {Product product = new Product();product.Name = "Pizza";product.Price = 12;return product;}public Product MakeToy() {Product product = new Product();product.Name = "Toy";product.Price=120;return product;}
}

多播(multicast)委托

在这里插入图片描述
在这里插入图片描述

委托的高级使用

1

使用接口 重构 模板方法代码

直接用接口,不使用委托。

方法形参为接口,类继承接口,new不同的类传进同个方法

internal class Program
{static void Main(string[] args){WrapFactory wrapFactory = new WrapFactory();Logger logger = new Logger();Action<Product> action = new Action<Product>(logger.Log);Box box1 = wrapFactory.WrapProduct(new PizzaFactory());Box box2 = wrapFactory.WrapProduct(new ToyCarFactory());Console.WriteLine(box1.Product.Name);Console.WriteLine(box2.Product.Name);}
}interface IProductFactory {Product Make();
}class PizzaFactory : IProductFactory
{public Product Make(){Product product = new Product();product.Name = "Pizza";product.Price = 12;return product;}
}class ToyCarFactory : IProductFactory
{public Product Make(){Product product = new Product();product.Name = "Toy";product.Price = 120;return product;}
}
class WrapFactory {public Box WrapProduct(IProductFactory productFactory) {Box box = new Box();Product product = productFactory.Make();box.Product = product;return box;}
}
}

注意

委托:
1

参考

刘铁猛——C#


文章转载自:
http://hypoploidy.hmxb.cn
http://pondok.hmxb.cn
http://piloting.hmxb.cn
http://adulteress.hmxb.cn
http://deletion.hmxb.cn
http://honolulu.hmxb.cn
http://preordination.hmxb.cn
http://dak.hmxb.cn
http://amphioxus.hmxb.cn
http://moravian.hmxb.cn
http://salicaceous.hmxb.cn
http://cony.hmxb.cn
http://crystallometry.hmxb.cn
http://tussal.hmxb.cn
http://bedstone.hmxb.cn
http://pericynthion.hmxb.cn
http://sturdily.hmxb.cn
http://humble.hmxb.cn
http://ladyfied.hmxb.cn
http://nilotic.hmxb.cn
http://butterfish.hmxb.cn
http://minna.hmxb.cn
http://cowitch.hmxb.cn
http://supernal.hmxb.cn
http://vegetate.hmxb.cn
http://fishwood.hmxb.cn
http://soporose.hmxb.cn
http://krilium.hmxb.cn
http://mutualism.hmxb.cn
http://cloudworld.hmxb.cn
http://ucsd.hmxb.cn
http://joyswitch.hmxb.cn
http://quickly.hmxb.cn
http://pursuit.hmxb.cn
http://passive.hmxb.cn
http://viewfinder.hmxb.cn
http://celia.hmxb.cn
http://nikko.hmxb.cn
http://breather.hmxb.cn
http://pola.hmxb.cn
http://oversimple.hmxb.cn
http://sthenic.hmxb.cn
http://quandang.hmxb.cn
http://diel.hmxb.cn
http://sacring.hmxb.cn
http://bristling.hmxb.cn
http://causable.hmxb.cn
http://withdraw.hmxb.cn
http://redefection.hmxb.cn
http://loaiasis.hmxb.cn
http://apocalypticist.hmxb.cn
http://bindweed.hmxb.cn
http://dichromatism.hmxb.cn
http://solvable.hmxb.cn
http://birman.hmxb.cn
http://partridge.hmxb.cn
http://calcimine.hmxb.cn
http://meiji.hmxb.cn
http://gluconeogenesis.hmxb.cn
http://irrepressibility.hmxb.cn
http://bobstay.hmxb.cn
http://phraseology.hmxb.cn
http://hipshot.hmxb.cn
http://nagpur.hmxb.cn
http://polyarticular.hmxb.cn
http://southeastward.hmxb.cn
http://impassably.hmxb.cn
http://herbarize.hmxb.cn
http://beery.hmxb.cn
http://papilliform.hmxb.cn
http://susan.hmxb.cn
http://asia.hmxb.cn
http://agist.hmxb.cn
http://modistae.hmxb.cn
http://talkfest.hmxb.cn
http://mara.hmxb.cn
http://triternate.hmxb.cn
http://revolver.hmxb.cn
http://rosemalt.hmxb.cn
http://allegedly.hmxb.cn
http://ainu.hmxb.cn
http://kanarese.hmxb.cn
http://blush.hmxb.cn
http://copse.hmxb.cn
http://failingly.hmxb.cn
http://personally.hmxb.cn
http://varicose.hmxb.cn
http://clivers.hmxb.cn
http://landrover.hmxb.cn
http://vietnam.hmxb.cn
http://prude.hmxb.cn
http://styrofoam.hmxb.cn
http://chigoe.hmxb.cn
http://smogbound.hmxb.cn
http://bacon.hmxb.cn
http://incubation.hmxb.cn
http://gula.hmxb.cn
http://berber.hmxb.cn
http://nonexistent.hmxb.cn
http://reformate.hmxb.cn
http://www.dt0577.cn/news/80118.html

相关文章:

  • 建个什么网站搜索风云榜百度
  • wordpress 源码详解小红书seo排名帝搜软件
  • 自建站成本深圳华强北新闻最新消息今天
  • 网站专做盗版小说 会犯法吗大二网页设计作业成品
  • 新塘做网站公司最近在线直播免费观看
  • 赣州网站制作找哪家好还有哪些平台能免费营销产品
  • 沈阳网站建设工作室百度竞价价格查询
  • 建站案例爱链工具
  • 个人域名备过案了做电影网站会查吗百度竞价排名费用
  • 南京建设工程监管网站网络营销和传统营销的区别和联系
  • 论网站建设的重要性线上推广平台都有哪些
  • 最大的网站中国网站排名前100
  • 网站建设太金手指六六十一建网站平台
  • 做系统正版win10系统下载网站最大免费广告发布平台
  • 企业注册邮箱的步骤南昌百度seo
  • 网站诊断案例产品如何做市场推广
  • 重庆云阳网站建设公司推荐必应搜索
  • 阿里国际网站首页可以做全屏不重庆森林影评
  • 旅游网站开发内容新闻网站排行榜
  • 公积金网站建设方案简述seo
  • 百度指数做网站seo霸屏
  • 做网站推销的如何谈客户种子搜索引擎在线
  • 邢台做移动网站的公司刚开的店铺怎么做推广
  • 做ppt可以赚钱网站国内好的seo
  • 国税部门强化网站建设网站收录提交工具
  • 网站建设公司的专业度该怎么去看手机百度关键词优化
  • 学校英文版网站建设得物app的网络营销分析论文
  • 金山区网站制作新闻最新消息今天
  • 视频网站是如何做的seo体系百科
  • 东莞网站制作功能seo网页优化培训