一個很很好玩的學習Java設計模式的PDF

來源:互聯網
上載者:User

標籤:

目錄如下:用非常通俗的語言來描述設計模式。

目 錄
第 1 章 策略模式【STRATEGY PATTERN】 .......................................................................................................... 4
第 2 章 代理模式【PROXY PATTERN】 ............................................................................................................... 8
第 3 章 單例模式【SINGLETON PATTERN】 ...................................................................................................... 12
第 4 章 多例模式【MULTITION PATTERN】 ...................................................................................................... 16
第 5 章 Factory 方法模式【FACTORY METHOD PATTERN】 ................................................................................... 19
第 6 章 抽象原廠模式【ABSTRACT FACTORY PATTERN】 ................................................................................. 31
第 7 章 門面模式【FACADE PATTERN】 ........................................................................................................... 44
第 8 章 適配器模式【ADAPTER PATTERN】 ..................................................................................................... 51
第 9 章 模板方法模式【TEMPLATE METHOD PATTERN】 ................................................................................. 63
第 10 章 建造者模式【BUILDER PATTERN】 ...................................................................................................... 82
第 11 章 橋樑模式【BRIDGE PATTERN】 ............................................................................................................ 97
第 12 章 命令模式【COMMAND PATTERN】 ................................................................................................... 112
第 13 章 裝飾模式【DECORATOR PATTERN】 .................................................................................................. 126
第 14 章 迭代器模式【ITERATOR PATTERN】 .................................................................................................. 137
第 15 章 組合模式【COMPOSITE PATTERN】 ................................................................................................... 147
第 16 章 觀察者模式【OBSERVER PATTERN】 ................................................................................................. 175
第 17 章 責任鏈模式【CHAIN OF RESPONSIBILITY PATTERN】 ......................................................................... 194
第 18 章 訪問者模式【VISITOR PATTERN】 ..................................................................................................... 210
第 19 章 狀態模式【STATE PATTERN】 ............................................................................................................ 236
第 20 章 原型模式【PROTOTYPE PATTERN】 ................................................................................................... 255
第 21 章 中介者模式【MEDIATOR PATTERN】 ................................................................................................. 268
第 22 章 解譯器模式【INTERPRETER PATTERN】 ............................................................................................. 286
第 23 章 亨元模式【FLYWEIGHT PATTERN】 .................................................................................................... 287
第 24 章 備忘錄模式【MEMENTO PATTERN】 ................................................................................................. 288
第 25 章 模式大PK ........................................................................................................................................... 289
第 26 章 六大設計原則 .................................................................................................................................... 290
26.1 單一職責原則【SINGLE RESPONSIBILITY PRINCIPLE】 ............................................................................................ 290
26.2 裡氏替換原則【LISKOV SUBSTITUTION PRINCIPLE】 .............................................................................................. 297
您的設計模式
第 3 頁
26.3 依賴倒置原則【DEPENDENCE INVERSION PRINCIPLE】 .......................................................................................... 309
26.4 介面隔離原則【INTERFACE SEGREGATION PRINCIPLE】 .......................................................................................... 310
26.5 迪米特法則【LOW OF DEMETER】 ..................................................................................................................... 320
26.6 開閉原則【OPEN CLOSE PRINCIPLE】 .................................................................................................................. 330
第 27 章 混編模式講解 .................................................................................................................................... 332
第 28 章 更新記錄: ....................................................................................................................................... 334
相關說明 ............................................................................................................................................................... 335
相關說明 ............................................................................................................................................................... 335
第 29 章 後序 ................................................................................................................................................... 336

 

 

第 1 章 策略模式【Strategy Pattern】
劉備要到江東娶老婆了,走之前諸葛亮給趙雲(伴郎)三個錦囊妙計,說是按天機拆開解決棘手問題,
嘿,還別說,真是解決了大問題,搞到最後是周瑜陪了夫人又折兵呀,那咱們先看看這個情境是什麼樣子
的。
先說這個情境中的要素:三個妙計,一個錦囊,一個趙雲,妙計是小亮同志給的,妙計是放置在錦囊
裡,俗稱就是錦囊妙計嘛,那趙雲就是一個幹活的人,從錦囊中取出妙計,執行,然後獲勝,用JAVA 程式
怎麼表現這個呢?我們先看類圖:
三個妙計是同一類型的東東,那咱就寫個介面:
package com.cbf4life.strategy;
/**
* @author cbf4Life [email protected]
* I‘m glad to share my knowledge with you all.
* 首先定一個策略介面,這是諸葛亮老人家給趙雲的三個錦囊妙計的介面
*
*/
public interface IStrategy {
//每個錦囊妙計都是一個可執行檔演算法
public void operate();
}
您的設計模式
第 5 頁
然後再寫三個實作類別,有三個妙計嘛:
package com.cbf4life.strategy;
/**
* @author cbf4Life [email protected]
* I‘m glad to share my knowledge with you all.
* 找喬國老幫忙,使孫權不能殺劉備
*/
public class BackDoor implements IStrategy {
public void operate() {
System.out.println("找喬國老幫忙,讓吳國太給孫權施加壓力");
}
}
package com.cbf4life.strategy;
/**
* @author cbf4Life [email protected]
* I‘m glad to share my knowledge with you all.
* 求吳國太開個綠燈
*/
public class GivenGreenLight implements IStrategy {
public void operate() {
System.out.println("求吳國太開個綠燈,允許存取!");
}
}
package com.cbf4life.strategy;
/**
* @author cbf4Life [email protected]
* I‘m glad to share my knowledge with you all.
* 孫夫人斷後,擋住追兵
*/
public class BlockEnemy implements IStrategy {
public void operate() {
System.out.println("孫夫人斷後,擋住追兵");
}
}
好了,大家看看,三個妙計是有了,那需要有個地方放這些妙計呀,放錦囊呀:
package com.cbf4life.strategy;
/**
* @author cbf4Life [email protected]
* I‘m glad to share my knowledge with you all.
* 計謀有了,那還要有錦囊
*/
public class Context {
//建構函式,你要使用那個妙計
private IStrategy straegy;
public Context(IStrategy strategy){
this.straegy = strategy;
}
//使用計謀了,看我出招了
public void operate(){
this.straegy.operate();
}
}
然後就是趙雲雄赳赳的揣著三個錦囊,拉著已步入老年行列的、還想著娶純情少女的、色迷迷的劉老
爺子去入贅了,嗨,還別說,小亮的三個妙計還真是不錯,瞅瞅:
package com.cbf4life.strategy;
/**
* @author cbf4Life [email protected]
* I‘m glad to share my knowledge with you all.
*/
public class ZhaoYun {
/**
* 趙雲出場了,他根據諸葛亮給他的交代,依次拆開妙計
*/
public static void main(String[] args) {
Context context;

//剛剛到吳國的時候拆第一個
System.out.println("-----------剛剛到吳國的時候拆第一個-------------");
context = new Context(new BackDoor()); //拿到妙計
context.operate(); //拆開執行
System.out.println("\n\n\n\n\n\n\n\n");
//劉備樂不思蜀了,拆第二個了
System.out.println("-----------劉備樂不思蜀了,拆第二個了-------------");
context = new Context(new GivenGreenLight());
context.operate(); //執行了第二個錦囊了
System.out.println("\n\n\n\n\n\n\n\n");
//孫權的小兵追了,咋辦?拆第三個
System.out.println("-----------孫權的小兵追了,咋辦?拆第三個
-------------");
context = new Context(new BlockEnemy());
context.operate(); //孫夫人退兵
System.out.println("\n\n\n\n\n\n\n\n");
/*
*問題來了:趙雲實際不知道是那個策略呀,他只知道拆第一個錦囊,
*而不知道是BackDoor這個妙計,咋辦? 似乎這個策略模式已經把計謀名稱寫出來了
*
* 錯!BackDoor、GivenGreenLight、BlockEnemy只是一個代碼,你寫成first、second、
third,沒人會說你錯!
*
* 策略模式的好處就是:體現了高內聚低耦合的特性呀,缺點嘛,這個那個,我回去再查查
*/
}
}
就這三招,搞的周郎是“陪了夫人又折兵”呀!這就是策略模式,高內聚低耦合的特點也表現出來了,
還有一個就是擴充性,也就是OCP 原則,策略類可以繼續增加下去,只要修改Context.java 就可以了,這
個不多說了,自己領會吧。

 

 

具體連結見百度網盤 :http://pan.baidu.com/s/1bnvZebH  提取碼:kzh6

一個很很好玩的學習Java設計模式的PDF

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.