今天周六,休息,剛下過雨,有風。 哈哈,像不像古龍的小說。程式員不是機器人,不是國家總理,沒有那麼忙。而老闆講究的永遠是利益,利用,所以當你沒利用價值的時候,看老闆能閑養你三個月嗎?程式員的賺錢工具就是技術,別人無法替代的技術。天天休息不好,失眠,心亂,只能寫篇博客靜靜心。 在面向對象中,每個對象都 ...
今天周六,休息,剛下過雨,有風。
哈哈,像不像古龍的小說。程式員不是機器人,不是國家總理,沒有那麼忙。而老闆講究的永遠是利益,利用,所以當你沒利用價值的時候,看老闆能閑養你三個月嗎?程式員的賺錢工具就是技術,別人無法替代的技術。天天休息不好,失眠,心亂,只能寫篇博客靜靜心。
在面向對象中,每個對象都要占用空間,比如New一個對象,是在堆中分配空間,然後把堆中的引用給這個引用類型。但是不同的對象,雖然空間不同,但是空間中的值是可以相同的。像匿名方法,只用一次,不再用,所以也就沒必要起個名字。而有些對象,New後,使用後,可能還會使用,這樣的對象應該放在對象池子中。對象從類型上分,可以分不同的類型,從數量上分,可以分單個,多個集合。池子對象就是集合對象。
閑話少說,今天說享元模式,享,享福的意思,共用。元,對象的靜態成員,動態成員都是元。
直接上例子,我來解釋。
//抽象類,一種接收者
abstract class WebSite
{
public abstract void Use(User user);
}
//具體類
class ConcreteWebSite : WebSite
{
private string name = "";
public ConcreteWebSite(string name)
{
this.name = name;
}
public override void Use(User user)
{
Console.WriteLine("網站分類:" + name + " 用戶:" + user.Name);
}
}
//工廠,生成對象,存放對象。
class WebSiteFactory
{
//存對象
private Hashtable flyweights = new Hashtable();
//把對象緩存起來
public WebSite GetWebSiteCategory(string key)
{
if (!flyweights.ContainsKey(key))
flyweights.Add(key, new ConcreteWebSite(key));
return ((WebSite)flyweights[key]);
}
public int GetWebSiteCount()
{
return flyweights.Count;
}
}
//參數包裝者,對象的關聯關係
public class User
{
private string name;
public User(string name)
{
this.name = name;
}
public string Name
{
get { return name; }
}
}
//對象的對外介面
WebSiteFactory f = new WebSiteFactory();
WebSite fx = f.GetWebSiteCategory("產品展示");
fx.Use(new User("小菜"));
//對象重覆使用,共用池中對象
WebSite fy = f.GetWebSiteCategory("產品展示");
fy.Use(new User("大鳥"));
WebSite fz = f.GetWebSiteCategory("產品展示");
fz.Use(new User("嬌嬌"));
WebSite fl = f.GetWebSiteCategory("博客");
fl.Use(new User("老頑童"));
WebSite fm = f.GetWebSiteCategory("博客");
fm.Use(new User("桃谷六仙"));
WebSite fn = f.GetWebSiteCategory("博客");
fn.Use(new User("南海鱷神"));
總結,休息不好,沒有感情滋養,精神狀態不佳。程式員這個職業屬於堅持的人,堅持下來的才稱得上程式員。下一個目標,工作到2022年,10年開發經驗。