概述
有時(shí)候看源碼的時(shí)候總是對(duì)代碼中很多代碼中的設(shè)計(jì)
感覺很不理解,但有覺得特別精到,后面了解到這是Java的設(shè)計(jì)模式,學(xué)習(xí)設(shè)計(jì)模式可以讓自己對(duì)Java的編碼與Java的設(shè)計(jì)思想有更多的感悟,對(duì)編碼也會(huì)有很大的提升.
初步了解Java設(shè)計(jì)模式
設(shè)計(jì)模式的概念
使用設(shè)計(jì)模式是為了提高代碼的重用性,使得代碼更易理解并保證代碼的可靠性.
在我們平常編寫代碼的過程,其實(shí)很多項(xiàng)目的建立都是在Copy,Copy,Copy的過程,我們使用Java中的API,將代碼的編程變成了修房子中搬磚
的過程.So 低級(jí)的程序員又稱為碼農(nóng)
.
一般可復(fù)用的系統(tǒng)一般有兩大類:工具箱(一般是我們的Util包)
,Framework(框架)
.
我們?cè)趯慦eb的時(shí)候,我們不使用框架,其實(shí)我們就是在自己編寫
底層
,Framework(框架)
就是已經(jīng)寫好底層代碼只等我們進(jìn)行調(diào)用.——— 出自一朋友對(duì)框架的認(rèn)識(shí)
Java的設(shè)計(jì)模式貫徹的原理是:面向接口編程
,而不是面向?qū)崿F(xiàn).
目標(biāo)原則:降低耦合
,增強(qiáng)靈活性
.
設(shè)計(jì)模式分類
常用設(shè)計(jì)模式有23中,按照特點(diǎn)分為三大類型:創(chuàng)建型
,結(jié)構(gòu)型
,行為型
.
創(chuàng)建型
顧名思義,創(chuàng)建型模式是用來創(chuàng)建對(duì)象的模式,抽象了實(shí)例化的過程,幫助系統(tǒng)獨(dú)立
于其關(guān)聯(lián)對(duì)象的創(chuàng)建,組合和表達(dá)方式.創(chuàng)建型模式都用兩個(gè)主要的功能:
- 將具體類中實(shí)現(xiàn)過程
封裝
起來. - 隱藏類的實(shí)例是如何被創(chuàng)建和組織起來的.外界只知道接口,不知道如何實(shí)現(xiàn)的.
創(chuàng)造型模式的作用概況為兩點(diǎn):
- 封裝創(chuàng)建邏輯,不僅僅是new一個(gè)對(duì)象那么簡(jiǎn)單.
- 封裝創(chuàng)建邏輯變化,客戶代碼盡量不修改或者盡量少修改.
水果 fruit=new 蘋果();
水果 fruit=new 梨子();
在其他地方需要用到fruit的地方,仍然不需要進(jìn)行改變,這樣可以讓我們客戶代碼精良不修改或者盡量少修改.
常見的創(chuàng)造型設(shè)計(jì)模式有下面幾種:
- 單例模式:一個(gè)類只有
一個(gè)實(shí)例
,并且自行實(shí)例化并向整個(gè)系統(tǒng)提供這個(gè)實(shí)例. - 工廠模式:在工廠方法模式中,工廠類成為了
抽象類
,實(shí)際的創(chuàng)建工作將由其具體子類來完成. - 抽象工廠模式:抽象工廠是所有工廠模式中最為抽象且最具有一般性的一種形態(tài).
- 建造者模式:把構(gòu)造對(duì)象實(shí)例的邏輯移動(dòng)了類的外部,在類的外部定義了該類的結(jié)構(gòu)邏輯.
- 原型模式:原型模式和工廠模式一樣,對(duì)客戶隱藏了對(duì)象創(chuàng)建工作的實(shí)現(xiàn)細(xì)節(jié),但是原型模式是通過復(fù)制一個(gè)現(xiàn)有對(duì)象來生成新對(duì)象.
結(jié)構(gòu)型
常用的結(jié)構(gòu)性設(shè)計(jì)模式有以下幾種:
- 代理模式
- 裝飾模式
- 設(shè)配器模式
- 組合模式
- 橋梁模式
- 外觀模式
- 享元模式
行為型
常見的行為型設(shè)計(jì)模式有以下幾種:
- 模板方法模式
- 命令模式
- 責(zé)任鏈模式
- 策略模式
- 迭代器模式
- 中介者模式
- 觀察者模式
- 備忘錄模式
- 訪問者模式
- 狀態(tài)模式
- 解釋器模式