一、設(shè)計(jì)模式
設(shè)計(jì)模式(Design pattern)代表了最佳的實(shí)踐,是軟件開(kāi)發(fā)人員在軟件開(kāi)發(fā)過(guò)程中面臨一般問(wèn)題的解決方案,是眾多軟件開(kāi)發(fā)人員經(jīng)過(guò)相當(dāng)長(zhǎng)的一段時(shí)間的試驗(yàn)和錯(cuò)誤總結(jié)出來(lái)的。是優(yōu)秀程序猿的經(jīng)驗(yàn)結(jié)晶。
但不推薦剛?cè)腴T(mén)的開(kāi)發(fā)者學(xué)習(xí),哪怕把代碼搞的一塌糊涂,也要先將功能完成,初學(xué)者,邁過(guò)坑是必然的,只有對(duì)自己編寫(xiě)的代碼不滿意,你才會(huì)體會(huì)到設(shè)計(jì)模式的重要性,也才能更加理解。
二、四大類(lèi)型
設(shè)計(jì)模式可以分為四大類(lèi):創(chuàng)建型模式(Creational Patterns)、結(jié)構(gòu)型模式(Structural Patterns)、行為型模式(Behavioral Patterns)、J2EE 設(shè)計(jì)模式
1、 創(chuàng)建型模式;
特點(diǎn):這些設(shè)計(jì)模式提供了一種在創(chuàng)建對(duì)象的同時(shí)隱藏創(chuàng)建邏輯的方式,而不是使用 new 運(yùn)算符直接實(shí)例化對(duì)象。
好處:這使得程序在判斷針對(duì)某個(gè)給定實(shí)例需要?jiǎng)?chuàng)建哪些對(duì)象時(shí)更加靈活
包括:
(1)、 工廠模式(FactoryPattern);
(2)、 抽象工廠模式(AbstractFactoryPattern);
(3)、 單例模式(SingletonPattern);
(4)、 建造者模式(BuilderPattern;
(5)、 原型模式(PrototypePattern);
2、 結(jié)構(gòu)型模式;
特點(diǎn):這些設(shè)計(jì)模式主要處理類(lèi)或?qū)ο蟮慕M合,通過(guò)繼承或組合的方式獲得更靈活的結(jié)構(gòu),以適應(yīng)需求變化對(duì)對(duì)象結(jié)構(gòu)帶來(lái)的影響。
好處:簡(jiǎn)化系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn),使其具有更好的可擴(kuò)展性和可維護(hù)性。
包括
(1)、 適配器模式(AdapterPattern);
(2)、 橋接模式(BridgePattern);
(3)、 過(guò)濾器模式(Filter、CriteriaPattern);
(4)、 組合模式(CompositePattern);
(5)、 裝飾器模式(DecoratorPattern);
(6)、 外觀模式(FacadePattern);
(7)、 享元模式(FlyweightPattern);
(8)、 代理模式(ProxyPattern);
3、 行為型模式;
特點(diǎn):這些設(shè)計(jì)模式專(zhuān)注于對(duì)象之間的通信和職責(zé)分配。它們通過(guò)類(lèi)繼承或?qū)ο蠼M合來(lái)劃分職責(zé),以應(yīng)對(duì)需求變化對(duì)多個(gè)交互對(duì)象的影響。
好處:有助于系統(tǒng)的行為管理,使得系統(tǒng)更加靈活和易于維護(hù)。
包括
(1)、 責(zé)任鏈模式(ChainofResponsibilityPattern);
(2)、 命令模式(CommandPattern);
(3)、 解釋器模式(InterpreterPattern);
(4)、 迭代器模式(IteratorPattern);
(5)、 中介者模式(MediatorPattern);
(6)、 備忘錄模式(MementoPattern);
(7)、 觀察者模式(ObserverPattern);
(8)、 狀態(tài)模式(StatePattern);
(9)、 空對(duì)象模式(NullObjectPattern);
(10)、 策略模式(StrategyPattern);
(11)、 模板模式(TemplatePattern);
(12)、 訪問(wèn)者模式(VisitorPattern);
4、 J2EE模式;
主要用于解決在企業(yè)級(jí)應(yīng)用開(kāi)發(fā)中的特定問(wèn)題。
包括:
(1)、 MVC模式(MVCPattern);
(2)、 業(yè)務(wù)代表模式(BusinessDelegatePattern);
(3)、 組合實(shí)體模式(CompositeEntityPattern);
(4)、 數(shù)據(jù)訪問(wèn)對(duì)象模式(DataAccessObjectPattern);
(5)、 前端控制器模式(FrontControllerPattern);
(6)、 攔截過(guò)濾器模式(InterceptingFilterPattern);
(7)、 服務(wù)定位器模式(ServiceLocatorPattern);
(8)、 傳輸對(duì)象模式(TransferObjectPattern);
三、設(shè)計(jì)原則
SOLID原則:(5條最核心原則):
1、單一職責(zé)原則 (Single Responsibility Principle, SRP)
一個(gè)類(lèi)應(yīng)該只有一個(gè)引起變化的原因。
理解:這意味著一個(gè)類(lèi)應(yīng)該只有一個(gè)職責(zé),當(dāng)職責(zé)變化時(shí),只需修改這個(gè)類(lèi)。這有助于保持類(lèi)的內(nèi)聚性,減少類(lèi)之間的耦合。
2、開(kāi)放封閉原則 (Open-Closed Principle, OCP)
軟件實(shí)體(類(lèi)、模塊、函數(shù)等)應(yīng)該是可擴(kuò)展的,但是不可修改的。
理解:這意味著當(dāng)需求變化時(shí),我們應(yīng)該通過(guò)添加新的代碼來(lái)滿足這些變化,而不是修改現(xiàn)有的代碼。這有助于保持系統(tǒng)的穩(wěn)定性和可維護(hù)性。
3、里氏替換原則 (Liskov Substitution Principle, LSP)
子類(lèi)型必須能夠替換它們的基類(lèi)型。
理解:這意味著派生類(lèi)(子類(lèi))必須能夠無(wú)差別地替換其基類(lèi)(父類(lèi)),并且程序的行為不會(huì)發(fā)生變化。這有助于確保代碼的正確性和可維護(hù)性。
4、接口隔離原則 (Interface Segregation Principle, ISP)
客戶(hù)端不應(yīng)該被強(qiáng)制依賴(lài)于它們不使用的接口。
理解:這意味著一個(gè)類(lèi)對(duì)另一個(gè)類(lèi)的依賴(lài)應(yīng)該是最小的,即一個(gè)接口應(yīng)該小而完備,只包含客戶(hù)端需要的方法。這有助于減少類(lèi)之間的耦合,提高系統(tǒng)的可維護(hù)性和靈活性。
5、依賴(lài)倒置原則 (Dependency Inversion Principle, DIP)
高層模塊不應(yīng)該依賴(lài)于低層模塊,它們都應(yīng)該依賴(lài)于抽象。
抽象不應(yīng)該依賴(lài)于細(xì)節(jié),細(xì)節(jié)應(yīng)該依賴(lài)于抽象。
理解:這意味著我們應(yīng)該依賴(lài)于抽象(接口或抽象類(lèi)),而不是具體的實(shí)現(xiàn)。這有助于減少類(lèi)之間的耦合,提高系統(tǒng)的可測(cè)試性和可擴(kuò)展性。
其他5條核心原則:
6、迪米特法則(最少知道原則):一個(gè)對(duì)象應(yīng)該對(duì)其他對(duì)象保持最少的了解。也就是說(shuō),一個(gè)類(lèi)應(yīng)該盡量減少與其他類(lèi)的耦合度,只與它直接相關(guān)的類(lèi)進(jìn)行交互。
7、合成復(fù)用原則:盡量使用合成/聚合的方式,而不是使用繼承來(lái)實(shí)現(xiàn)代碼的復(fù)用。繼承雖然可以實(shí)現(xiàn)代碼的復(fù)用,但也可能導(dǎo)致類(lèi)的層次結(jié)構(gòu)過(guò)于復(fù)雜,破壞封裝性。通過(guò)合成,可以將已有的類(lèi)組合成新的類(lèi),達(dá)到復(fù)用的目的,同時(shí)保持類(lèi)的簡(jiǎn)單和清晰。
8、包內(nèi)原則:類(lèi)之間的依賴(lài)關(guān)系應(yīng)該盡量減少,盡量限制在包(package)內(nèi)部。這樣可以降低類(lèi)之間的耦合度,提高系統(tǒng)的可維護(hù)性和可擴(kuò)展性。
9、無(wú)環(huán)依賴(lài)原則:系統(tǒng)中的依賴(lài)關(guān)系應(yīng)該形成一個(gè)無(wú)環(huán)的圖。也就是說(shuō),不應(yīng)該存在循環(huán)依賴(lài)的情況,因?yàn)檠h(huán)依賴(lài)可能導(dǎo)致代碼難以理解和維護(hù)。
10、穩(wěn)定抽象原則:抽象應(yīng)該比細(xì)節(jié)具有更強(qiáng)的穩(wěn)定性。這意味著在設(shè)計(jì)系統(tǒng)時(shí),應(yīng)該優(yōu)先考慮抽象的設(shè)計(jì),而不是過(guò)早地陷入具體的實(shí)現(xiàn)細(xì)節(jié)中。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-861551.html
學(xué)海無(wú)涯苦作舟?。?!文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-861551.html
到了這里,關(guān)于Java設(shè)計(jì)模式_概述(設(shè)計(jì)模式類(lèi)型和基本原則)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!