1、簡介
設計模式(design pattern)是前輩們對**開發經驗的總結,是解決特定問題的一系列套路。它不是語法規定,而是一套用來提高**可復用性、可維護性、可讀性、穩健性以及安全性的解決方案。
1995 年,gof(gang of four,四人組/四人幫)合作出版了《設計模式:可復用物件導向軟體的基礎》一書,共收錄了 23 種設計模式,從此樹立了軟體設計模式領域的里程碑,人稱「gof設計模式」。
2、分類
建立型模式
描述怎樣去建立乙個物件
工廠模式、抽象工廠模式、單例模式、建造者模式、原型模式
結構型模式
描述類或物件如何按照某種布局組成更大的結構
介面卡模式、裝飾器模式、**模式、外觀模式橋接模式、組合模式、享元模式
行為型模式
描述類或物件之間如何互相協作完成單個物件無法完成的任務
策略模式、模板方法模式、觀察者模式、迭代子模式、責任鏈模式、命令模備忘錄模式、狀態模式、訪問者模式、中介者模式、直譯器模式
1、開閉原則
對擴充套件開放,對修改關閉。當需求發生改變的時候,不要修改原來的**,而是對其經行擴充套件。
2、黎克特制替換原則
繼承必須確保父類所擁有的性質在子類中依然成立。
3、依賴倒置原則
面向介面程式設計,不要面向實現程式設計。
4、單一職責原則
控制類的粒度大小,將物件解耦,提高內聚性。乙個類只需乾好一件事,不要做太多事。
5、介面隔離原則
要為各個類建立它們的專用介面。
6、迪公尺特原則
只與你的直接朋友交談,不要跟陌生人說話。
7、合成復用原則
盡量先使用組合或者聚合等關聯關係來實現,其次才考慮繼承關係。
靜態**
角色分析:
優點:缺點:
動態**/**
* @author xy
* @date 2020/5/26
* 抽象角色
*/public
inte***ce
iuserservice
/** * @author xy
* @date 2020/5/26
* 真實角色
* **角色要與真實角色有相同的需求
*/public
class
userserviceimpl
implements
iuserservice
}/**
* @author xy
* @date 2020/5/26
* 客戶
*/public
class
client
}/**
* @author xy
* @date 2020/5/26
* **角色
* **角色要與真實角色有相同的需求
*/public
class
proxy
implements
iuserservice
@override
public
void
add(
)//新增日誌的方法
public
void
log(string msg)
}
/**
* @author xy
* @date 2020/5/26
* 要用這個類自動生成**類
*/public
class
proxyinvocationhandler
implements
invocationhandler
//得到**物件
public object getproxy()
//處理**例項並返回結果
@override
public object invoke
(object proxy, method method, object[
] args)
throws throwable
private
void
log(string msg)
}/**
* @author xy
* @date 2020/5/26
* 客戶
*/public
class
client
}
/**
* @author xy
* @date 2020/5/26
*/public
class
agent
implements
invocationhandler
, agent);}
//處理**例項並返回結果
public object invoke
(object proxy, method method, object[
] args)
throws throwable
private
void
log(string msg)
}
Linux需要什麼
來自http www.kylix.com.cn 詳細介紹 主要特色 快速成長的linux 市場 兼具穩定性 拓展性 開放性及低成本的linux 平台,是目前全球各地快速為市場所接受的作業系統。從web 伺服器 防火牆到快速快取網頁伺服器,眾多的linux 已經成功運用於internet 相關伺服器應...
你到底要什麼
看 蝸居 總是想起很多年前看過的一部前蘇聯 你到底要什麼 按照從前的說法,這部作品揭露了勃列日涅夫時代蘇聯青年面對西方物質文明所表現出來的迷戀 狂熱和彷徨。其實,這兩部作品沒有多少可比性,如果說還有一點相似之處的話,那麼就是,它們用不同的方式,通過不同的途徑,提出了乙個幾乎相同的命題。我們所生活的這...
高薪需要什麼?
新的一年,看到別人跳槽或漲薪,你是否也蠢蠢欲動。怎樣拿到高薪?不知你是否想過。勤懇的埋頭苦幹抑或過硬的技術實力或者出色的溝通能力,你認為是什麼起主要決定因素?在這個變化的年代,我們的方向在 請看it人的成長故事。王超是我的朋友,來京四年整。最初在一家民企做linux運維工程師,月薪5000。工作很認...