原做地址:https://github.com/frank-lam/2019_campus_applyhtml
一、設計模式是人們在面對同類型軟件工程設計問題所總結出的一些有用經驗。模式不是代碼,而是某類問題的通用設計解決方案java
二、4人組Erich Gamma、Richard Helm、Ralph Johnson、John Vlissides總結寫了《設計模式》git
三、設計模式的優勢和用途github
四、學習設計模式最好的方式:在你的設計和以往的工程裏尋找何處可使用它們算法
五、設計模式的本質目的是使軟件工程在維護性、擴展性、變化性、複雜度方面成O(N)設計模式
六、OO(Object Oriented)是原則,設計模式是具體方法、工具api
2018/7/15安全
把一個類接口轉換成另外一個用戶須要的接口。適配器模式讓那些接口不兼容的類能夠一塊兒工做oracle
適配器模式的別名爲包裝器(Wrapper)模式,它既能夠做爲類結構型模式,也能夠做爲對象結構型模式。在適配器模式定義中所說起的接口是指廣義的接口,它能夠表示一個方法或者方法的集合。app
鴨子(Duck)和火雞(Turkey)擁有不一樣的叫聲,Duck 的叫聲調用 quack() 方法,而 Turkey 調用 gobble() 方法。
要求將 Turkey 的 gobble() 方法適配成 Duck 的 quack() 方法,從而讓火雞冒充鴨子!
public interface Duck { void quack(); }
public interface Turkey { void gobble(); }
public class WildTurkey implements Turkey { @Override public void gobble() { System.out.println("gobble!"); } }
public class TurkeyAdapter implements Duck { Turkey turkey; public TurkeyAdapter(Turkey turkey) { this.turkey = turkey; } @Override public void quack() { turkey.gobble(); } }
public class Client { public static void main(String[] args) { Turkey turkey = new WildTurkey(); Duck duck = new TurkeyAdapter(turkey); duck.quack(); } }
2018/7/11
狀態模式的類圖和策略模式相似,而且都是可以動態改變對象的行爲。
可是狀態模式是經過狀態轉移來改變 Context 所組合的 State 對象,而策略模式是經過 Context 自己的決策來改變組合的 Strategy 對象。
所謂的狀態轉移,是指 Context 在運行過程當中因爲一些條件發生改變而使得 State 對象發生改變,注意必需要是在運行過程當中。
狀態模式主要是用來解決狀態轉移的問題,當狀態發生轉移了,那麼 Context 對象就會改變它的行爲;而策略模式主要是用來封裝一組能夠互相替代的算法族,而且能夠根據須要動態地去替換 Context 使用的算法。
設計一個鴨子,它能夠動態地改變叫聲。這裏的算法族是鴨子的叫聲行爲。
public interface QuackBehavior { void quack(); }
public class Quack implements QuackBehavior { @Override public void quack() { System.out.println("quack!"); } }
public class Squeak implements QuackBehavior{ @Override public void quack() { System.out.println("squeak!"); } }
public class Duck { private QuackBehavior quackBehavior; public void performQuack() { if (quackBehavior != null) { quackBehavior.quack(); } } public void setQuackBehavior(QuackBehavior quackBehavior) { this.quackBehavior = quackBehavior; } }
public class Client { public static void main(String[] args) { Duck duck = new Duck(); duck.setQuackBehavior(new Squeak()); duck.performQuack(); duck.setQuackBehavior(new Quack()); duck.performQuack(); } }
squeak! quack!
2018/7/16
1.什麼是高內聚,低耦合?
卡奴達摩的專欄 - CSDN博客
https://blog.csdn.net/zhengzhb/article/category/926691/1
單例模式 - 23種設計模式 - 極客學院Wiki
http://wiki.jikexueyuan.com/project/java-design-pattern/singleton-pattern.html
https://www.bilibili.com/video/av18569541/
hexter 錄製的課程 - 極客學院【23種設計模式】
http://my.jikexueyuan.com/hexter/record/
設計模式之禪