1、設計模式設計模式
一、工廠模式ide
public class JiSuan { private int a; public int A { get { return a; } set { a = value; } } private int b; public int B { get { return b; } set { b = value; } } public virtual int YunSuan() { return 0; } } //加法類 public class Jia:JiSuan { public override int YunSuan() { return base.A + base.B; } } //減法類 public class Jian : JiSuan { public override int YunSuan() { return base.A - base.B; } } //工廠類 public class GongChang { public static JiSuan DuiXiang(string s) { switch(s) { case "+": return new Jia(); break; case "-": return new Jian(); break; case "*": return new Cheng(); break; default: return new Jia(); break; } } }
二、單例模式函數
class DBDA { //建變量 public string host; public string database; //靜態成員,用來存儲該類的對象 public static DBDA db = null; //構造方法 讓該類不能被實例化 private DBDA() { } //提供一個造對象的方法,控制只能造一個對象 public static DBDA DuiXiang() //由於不能造對象因此用static { if (db == null) { db = new DBDA(); } return db; } } class Program { static void Main(string[] args) { DBDA db = DBDA.DuiXiang(); db.host = "localhost"; DBDA db1 = DBDA.DuiXiang(); Console.WriteLine(db1.host); Console.ReadLine(); }
2、委託ui
也稱爲代理,事件也是一種委託,定義在類的最外面。spa
一、定義委託 設計
關鍵字:delegate 代理
函數簽名:簽名和函數保持一致 (函數簽名指返回類型和參數列表:例上面程序2中的void和string s)指針
定義委託的時候要根據函數來定義 code
public delegate int First(int a,int b);對象
指向的方法的返回類型,須要參數必須一致!
二、定義委託變量,指向方法
委託不能被實例化,由於不是類
First f = new JiaFa().JiaFa; //新建委託變量,指向方法,注意!!方法不須要小括號!!
第二次能夠使用+=
public int JiaFa(int a,int b)
{
return a+b;
}
調用: f(5,3);
能夠理解爲函數的指針,委託指向哪一個函數,則這個委託就表明哪一個函數
能夠讓函數當作參數同樣進行傳遞
//定義委託 public delegate void SuiBian(string s); class Program { static void Main(string[] args) { //委託 //把方法參數化 SuiBian s = China; s += America; //+=是綁定方法,將兩個委託的調用列表鏈接在一塊兒 -=去掉一個方法 =是替換 //調用語音方法 Speak(s); Console.WriteLine(); Console.ReadLine(); } //語音功能的方法 static void Speak(SuiBian yu) { yu("張三"); //if (n == 0) //{ // America(); //} //else if (n == 1) //{ // China(); //} //else if (n == 2) //{ // HanYu(); //} //America(); //China(); } //語音包 public static void America(string s) { Console.WriteLine(s+"hello"); } static void China(string s) { Console.WriteLine(s+"你好"); } static void HanYu(string s) { Console.WriteLine(s+"bjdkaj"); } }
※事件
事件就是一種特殊的委託