中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > 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 執(zhí)行拿到產品(不用管是什么產品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 無時區(qū)時間 ; DateTime.Now 有時區(qū)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();// 回調函數:觸發(fā)某種條件就自動執(zhí)行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://www.risenshineclean.com/news/36954.html

相關文章:

  • 電信服務器做網站網絡整合營銷理論案例
  • 織夢響應式茶葉網站流感用什么藥最好
  • 網站access數據怎么做朝陽seo推廣
  • 專業(yè)鄭州做網站的公司百度關鍵詞seo優(yōu)化
  • 網站域名授權怎么做什么叫seo
  • 佛山網站建設收費標準seo索引擎優(yōu)化
  • 國內哪里在搞建設長沙快速排名優(yōu)化
  • 中小企業(yè)服務肇慶seo
  • 電腦瀏覽器網頁打不開是什么原因關鍵詞seo排名優(yōu)化軟件
  • 網站委托書找誰做市場推廣怎么做
  • 湖南網站建設競價推廣教程
  • 一個網站域名多少錢做網站的軟件叫什么
  • dw網站站點建立后怎么做推廣工作的流程及內容
  • 四川住房和城鄉(xiāng)建設九大員網站百度知道官網手機版
  • 為什么多個網站域名有同個網站備案活動策劃
  • 國內做化妝刷的比較好的網站如何進行品牌宣傳與推廣
  • 學校網站建設方案書全球最大的中文搜索引擎
  • 手機版網站如何做圖片滾動網站搜索
  • javascript面試題做優(yōu)化關鍵詞
  • seo關鍵詞如何設置seo研究中心教程
  • 上海品牌網站開發(fā)推廣小程序拿傭金
  • 剛做的網站怎么才能搜索到免費b站推廣入口
  • 寺廟建設網站的意義百度搜索引擎的原理
  • 免費行情網站seo優(yōu)化軟件哪個好
  • 深圳南頭網站建設公司百度招聘官網
  • 石家莊造價工程信息網杭州新站整站seo
  • 課程資源網站開發(fā) jsp谷歌搜索引擎鏡像入口
  • 目前基金會網站做的比較好的專業(yè)培訓
  • vs做網站怎樣添加圖片鄭州網站seo外包公司
  • 一個網站交互怎么做整合營銷理論