機房收費系統(tǒng)合作版(五)――初識委托
來源:程序員人生 發(fā)布時間:2014-11-11 08:37:30 閱讀次數:2523次
拜托是甚么?你對拜托熟習嗎?答案是肯定的!你對拜托1定很熟習!對拜托的熟習,正如你對1個倒立著的人1樣熟習!為何這么說?由于方法的調用對每個學習過編程的人來講都很熟習,而且是熟習的不能再熟習了!那末方法的調用和拜托又有甚么關系呢?其實拜托就是將被動調用改成了主動服務。
拜托其實就是1種思想的轉變:由之前的被動調用方法轉變成,主動服務于某個方法。將方法間的交互思惟做了1個轉變。學習過3層的人不難想象方法之間的調用關系吧,那末使用了拜托以后他們方法之間的關系又是甚么樣的呢?(借用兩張圖展現1下)
圖1:是用拜托

圖2:未使用拜托

從宏觀的角度弄清楚了“拜托”是甚么了。再用1段代碼來展現拜托更加細節(jié)的1面:
**拜托的定義:
注意視察拜托的定義,不難發(fā)現,拜托與類同級。
//定義拜托
public delegate void AddEventHandler<T>(T t);
public delegate void DeleteEventHandler<T>(T t);
public delegate void UpdateEventHandler<T>(T t);
public delegate void QueryEventHandler<T>(T t);
public delegate T IsExistsEventHandler<T>(T t);
**拜托的事件:
注意視察事件的定義,不難發(fā)現,事件與方法同級。
//定義事件
public event AddEventHandler<T> AddEvent;
public event DeleteEventHandler<T> DeleteEvent;
public event UpdateEventHandler<T> UpdateEvent;
public event QueryEventHandler<T> QueryEvent;
public event IsExistsEventHandler<T> IsExistsEvent;
**將方法與拜托綁定:
+= new AddEventHandler<T>(this.manager.Add);
+= new DeleteEventHandler<T>(this.manager.Delete);
+= new UpdateEventHandler<T>(this.manager.Update);
+= new QueryEventHandler<T>(this.manager.Query);
+= new IsExistsEventHandler<T>(this.manager.isExist);
**為事件裝載拜托:
this.AddEvent += new AddEventHandler<T>(this.manager.Add);
this.DeleteEvent += new DeleteEventHandler<T>(this.manager.Delete);
this.UpdateEvent += new UpdateEventHandler<T>(this.manager.Update);
this.QueryEvent += new QueryEventHandler<T>(this.manager.Query);
this.IsExistsEvent += new IsExistsEventHandler<T>(this.manager.isExist);<strong style="color: rgb(51, 51, 255);">
</strong>
**全部登錄窗體的外觀層代碼:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Login.Model.Entity.Base;
using Login.Model.Adapter;
using Login.Model.Entity;
using System.Reflection;
namespace Login.Controller
{
//定義拜托
public delegate void AddEventHandler<T>(T t);
public delegate void DeleteEventHandler<T>(T t);
public delegate void UpdateEventHandler<T>(T t);
public delegate void QueryEventHandler<T>(T t);
public delegate T IsExistsEventHandler<T>(T t);
public class FacadeManager<T, TCollection>
{
private superManager<T,TCollection> manager;
//定義事件
public event AddEventHandler<T> AddEvent;
public event DeleteEventHandler<T> DeleteEvent;
public event UpdateEventHandler<T> UpdateEvent;
public event QueryEventHandler<T> QueryEvent;
public event IsExistsEventHandler<T> IsExistsEvent;
public FacadeManager(T t)
{
this.manager = this.createManager(t);
this.AddEvent += new AddEventHandler<T>(this.manager.Add);
this.DeleteEvent += new DeleteEventHandler<T>(this.manager.Delete);
this.UpdateEvent += new UpdateEventHandler<T>(this.manager.Update);
this.QueryEvent += new QueryEventHandler<T>(this.manager.Query);
this.IsExistsEvent += new IsExistsEventHandler<T>(this.manager.isExist);
}
/// <summary>
/// 創(chuàng)建對應的Manager
/// </summary>
/// <param name="t"></param>
/// <returns></returns>
public superManager<T,TCollection> createManager(T t){
string className = typeof(T).ToString() + "Manager";
className = className.Substring(className.LastIndexOf('.')+1);
//return (superManager<T>)Assembly.Load("Login").CreateInstance("Login.Controller." + className);
//參數數組
Object[] o =new Object[1];
o[0]=t;
return (superManager<T,TCollection>)Assembly.Load("Login").CreateInstance("Login.Controller." + className, false, System.Reflection.BindingFlags.Default, null, o, null, null);
}
/// <summary>
/// 判斷是不是存在
/// </summary>
/// <param name="t"></param>
/// <returns></returns>
public T isExist(T t)
{
//return manager.isExist(t);
return this.IsExistsEvent(t);
}
public bool add(T t)
{
throw new NotImplementedException();
}
public bool update(T t)
{
throw new NotImplementedException();
}
public bool delete(T t)
{
throw new NotImplementedException();
}
}
}
總結:
天下之事難易乎?為之,則難者亦易矣;不為,則易者亦難矣。人之為學有難易乎?學之,則難者亦易矣;不學,則易者亦難矣。
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈