工厂模式:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
设计模式:工厂模式,单例模式
《大话设计模式》
计算器
class JiSuanQi
{
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 int Jia()
{
return a + b;
}
//减法
public int Jian()
{
return a - b;
}
//乘法
public int Cheng()
{
return a * b;
}
}
改进计算器
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 Test
{
public string name;
}
数据访问类
class DBDA
{
public string host;
public string database;
静态成员,用来存储该类的对象
public static DBDA db = null;
让该类不能被实例化
private DBDA()
{
}
提供一个造对象的方法,控制只能造一个对象
public static DBDA DuiXiang()
{
if (db == null)
{
db = new DBDA();
}
return db;
}
}
定义委托
public delegate void SuiBian(string s);
class Program
{
static void Main(string[] args)
{
Test t1 = new Test();
Test t2 = new Test();
DBDA db = DBDA.DuiXiang();
db.host = "localhost";
DBDA db1 = DBDA.DuiXiang();
委托
把方法参数化
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();
}
}
语音包
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");
}
}
}