岁月如诗

导航

工厂模式,单例模式

工厂模式:

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");
}


}
}

 

posted on 2016-08-22 08:53  镜花水月☪  阅读(374)  评论(0编辑  收藏  举报