每個人活在這個世界上,就不可不免的要和其他人有接觸,想要真正的乙個人,是不現實的。就像**裡的類一樣,純粹的不和其他類有互動的類,
壓根就沒必要存在。隨著類與類之間的互動,各個類之間的耦合必然越來越強,複雜度也就越來越高,類數量少時還好,數量一多,直接讓你懵逼。
大家想必都知道的石頭剪刀布的遊戲,其中的規則也比較簡單,先用原始的類**來實現這個遊戲的規則。
public
class
******game
}/**
*@introduce:石頭類
* */
class stone
public
void
win()
public
void
lose()
public
void
same()
}/**
*@introduce:剪刀類
* */
class scissor
public
void
win()
public
void
lose()
public
void
same()
}/**
*@introduce:布類
* */
class cloth
public
void
win()
public
void
lose()
public
void
same()
}
控制台輸出:
石頭 vs 剪刀 result : win
石頭 vs 布 result : lose
石頭 vs 石頭 result : same
———————–分隔符————————
剪刀 vs 布 result : win
剪刀 vs 石頭 result : lose
剪刀 vs 剪刀 result : same
———————–分隔符————————
布 vs 石頭 result : win
布 vs 剪刀 result : lose
布 vs 布 result : same
觀察控制台可以發現已經達到了實現簡單遊戲的規則,不過這裡的耦合太強了,這是三個簡單類,但是每個類都和剩下的類耦合,
如果類資料上公升,這個耦合度會更強,關係更複雜。這時就可以引進乙個中介者,通過中介者把這個關聯關係拆開,類之間的相互依賴都改為依賴中介者,
從而降低耦合度。
public
class
******game
}/**
*@introduce:中介者類
* */
class mediator
public scissor getscissor()
public cloth getcloth()
}/**
*@introduce:石頭類
* */
class stone
public
stone(mediator mediator)
public
void
win()
public
void
lose()
public
void
same()
}/**
*@introduce:剪刀類
* */
class scissor
public string getname()
public
void
win()
public
void
lose()
public
void
same()
}/**
*@introduce:布類
* */
class cloth
public string getname()
public
void
win()
public
void
lose()
public
void
same()
}
控制台輸出時一樣的,這裡就不展示了,通過新增了乙個中介者類使得這三個類(剪刀、石頭、布)都不在與其他兩個類直接互動,都是通過中介者來完成,
即使也會新增了更多的類,這都是通過中介者來互動。類之間的耦合不會變高,不過相應的中介者類會變得越來越複雜。如果只是簡單的幾個類
其實沒必要用中介者模式,中介者模式是在各個類之間出現了網狀的關聯關係時才去使用的。平時幾個簡單類之間沒必要用到(上面只是舉個例子)。
參考大牛部落格
論安全的重要性
論安全的重要性 安全 是乙個永不過時的話題。在我們的現實生活中,無數的事實告訴我們,凡是無視安全的行為必將付出慘痛的代價。世界上每天都在發生著安全事故,汽車超載,超速行駛,闖紅燈 生產單位偷工減料,違規操作 公共服務場所無視安全規範 種種無視安全的情況造成了一起又一起的安全事故。慘痛的教訓告訴我們任...
論溝通的重要性
溝通,是建立人際關係的橋梁,如果這個世界缺少了溝通,那將是乙個不可想象的世界。可以這樣說,沒有溝通就沒有人際的互動關係,人與人之間關係,就會處在僵硬 隔閡 冷漠的狀態,會出現誤解 扭曲的局面,給工作和生活帶來極大的害處。資訊時代的到來,工作 生活節奏越來越快,人與人之間的思想需要加強交流 社會分工越...
論特徵的重要性
特徵工程有多重要,可以引用一句話來表達 資料和特徵決定了模型的上限,演算法只是在幫忙逼近這個上限。好的特徵是決定乙個模型準確率的關鍵,那問題來了?什麼是特徵呢,特徵就是資料對於結果的一種描述。比如我們形容乙個人是否漂亮,那她的眼睛大小 鼻子的形狀 臉型都是特徵。通常,當獲得乙份結構化資料的時候,如果...