技術是死的,功能是活的。如何實現一個功能有很多種方式,如何快速靈活高效的實現這些功能就是一門藝術了。這其中可能會組合式的用到設計模式,這就是架構。當你會使用設計模式的時候我相信你會愛上它!一、創建型模式 1、工廠方法模式:使用繼承,動態實例化不同的對象執行相同的方法。 2、抽象工廠模式: 3、單例模 ...
技術是死的,功能是活的。如何實現一個功能有很多種方式,如何快速靈活高效的實現這些功能就是一門藝術了。這其中可能會組合式的用到設計模式,這就是架構。當你會使用設計模式的時候我相信你會愛上它!
一、創建型模式
1、工廠方法模式:使用繼承,動態實例化不同的對象執行相同的方法。
2、抽象工廠模式:
3、單例模式:通過static關鍵字保證系統中一個類只有一個實例
4、建造者模式:
5、原型模式:
二、結構型模式
6、適配器模式:
7、裝飾器模式:使用依賴倒置原則,在對象的方法上又封裝一層。
8、代理模式:
9、代理模式:
10、外觀模式:
11、橋接模式:
12、組合模式:
13、亨元模式:
三、行為型模式
14、策略模式:
15、模板方法模式:
16、觀察者模式:使用事件的方式提前把觀察者的反應註冊到被觀察者的事件中,等待被觀察者觸發
17、迭代子模式:
18、責任鏈模式:
19、命令模式:
20、備忘錄模式:
21、狀態模式:
22、訪問者模式:
23、中介者模式:
24、解釋器模式:
單例模式
public class SingletonClass { private static SingletonClass instance=null; public static SingletonClass GetInstance() { if(instance==null) { instance=new SingletonClass(); } return instance; } private SingletonClass(){} public void MyFuntion() { //do some thing } } //調用示例 public class TestSingletonClass { public void DoSomeThing() { SingletonClass.GetInstance().MyFuntion(); } }
依賴倒置原則
public interface ICar { public void Run(); } public interface IDriver { public void DriverCar(ICar car); } public class BM : ICar { public void Run() { //do some thing } } public class Driver : IDriver { public void DriverCar(ICar car) { car.Run(); } } //調用示例 public class TestDriveCar { public void SomeOneDriveCar() { IDriver zhangSan = new Driver(); ICar BaoMa = new BM(); zhangSan.DriverCar(BaoMa); } }
觀察者模式(兩種方式,一種使用面向對象思想把觀察者的對象添加到被觀察中,一種是使用微軟自帶的事件添加到被觀察的事件中)
最經典的示例:貓叫,老鼠跑,孩子哭,媽媽醒來......
public class Cat { private List<Observer> obServerList=new List<Observer>(); public void Add(Observer obServer) { obServer.Add(obServer); } public void Remove(Observer obServer) { obServer.Remove(obServer); } public void Miao_Observer()//貓叫 { foreach(Observer obServer in obServerList) { obServer.ActionFuntion(); } } public Action OnCatMiaoHandler; public void Miao_Event()//貓叫 { foreach(Action action in OnCatMiaoHandler.GetInvocationList()) { action.Invoke(); } } } //調用示例 public class TestCat { Mouse mouse1=new Mouse(); Child child1=new Child(); void Miao_ObserverTest() { Cat cat =new Cat(); cat.Add(mouse1); cat.Add(child1); cat.Miao_Observer(); } void Miao_EventTest() { Cat cat =new Cat(); cat.OnCatMiaoHandler+=mouse1.Run; cat.OnCatMiaoHandler+=child1.Cry; cat.Miao_Event(); } } public abstract class Observer { public abstract void ActionFuntion(); } public class Mouse:Observer { public void ActionFuntion() { this.Run(); } public void Run()//老鼠跑 { } } public class Child:Observer { public void ActionFuntion() { this.Cry(); } public void Cry()//孩子哭 { } }
游戲中的示例:當玩家攻擊了其中之一的敵人時,那個隊伍的所有敵人都會註意到玩家,在攻擊範圍的敵人會掉血,並且開始攻擊玩家
參考:http://blog.csdn.net/sinat_20559947/article/details/50046201
未完待續...