小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

程序猿必備系列:開發(fā)者的藍(lán)圖之初探分類

 網(wǎng)羅燈下黑 2020-11-12

導(dǎo)語:前天端午想著努力再更一篇,沒想到被各種雜事耽擱了,先給大家補(bǔ)個(gè)端午安康。上一篇忙著說設(shè)計(jì)模式有多重要了,反而關(guān)于設(shè)計(jì)模式本身介紹的有點(diǎn)少,這一篇給大伙好好說說設(shè)計(jì)模式的到底有哪些。

這次就不扯閑篇了,直接步入正題。

上一篇說到設(shè)計(jì)模式是四人幫(GOF)當(dāng)初在《設(shè)計(jì)模式-可復(fù)用的面向?qū)ο筌浖亍分兴岢龅?,書中一共?23 種模式用來解決面向?qū)ο蟮某绦蛟O(shè)計(jì)中所出現(xiàn)的各種問題。

當(dāng)時(shí)那本書中針對(duì)的語言是 C++,雖然后來設(shè)計(jì)模式也變成了 Java 語言的寵兒,但歸根結(jié)底只要是面向?qū)ο蟮恼Z言都有必要掌握這些套路。

像 C 語言、Shell 語言這樣主推面向過程的語言,設(shè)計(jì)模式就很少站出來說話了,沒辦法,誰讓現(xiàn)在主流的設(shè)計(jì)模式都是從以 Java 為主的項(xiàng)目經(jīng)驗(yàn)中抽象出來的呢。

但就像之前說的,只要是能面向?qū)ο蟮恼Z言,設(shè)計(jì)模式都起到了重要的作用,像 PHP、Python 這樣的腳本語言也不例外,設(shè)計(jì)模式也是一個(gè)合格碼農(nóng)應(yīng)該具備的技能。

以我最為熟悉的 Python 為例,很多人都是把它當(dāng)膠水語言,確實(shí),它用來做膠水語言是真的方便,這也導(dǎo)致了很多人用它的時(shí)候都是以面向過程的方式編程。

何況 Python 的入門門檻低,用起來更靈活,在項(xiàng)目開發(fā)中所占的比重小,多以輔助為目的,久而久之,設(shè)計(jì)模式在 Python 開發(fā)中總是不成體系(可能是我見的少了)。

但你想成為一個(gè)成熟的程序猿我覺得就絕不能忽視設(shè)計(jì)模式,具體原因還是戳我下面那篇文章好了。

將程序中的變與不變分開,你真的懂我說的是什么?

話說回來,設(shè)計(jì)模式必須要是面向?qū)ο缶幊滩判?。?duì)于我們敲代碼的程序猿來說,使用設(shè)計(jì)模式,你就不能再從上到下的一條條去累加代碼了,但面向?qū)ο蟮暮?,是你將原來面向過程的代碼量縮減到原先的70%,甚至更少的時(shí)候才能體會(huì)到的。

具體到語言上,Python 和 Java 還是有很多不同的,影響最大的在我看來就是 Python 是所謂的無接口類型,定義接口將完全人為規(guī)定,在編程過程更需要自我約束,靈活是靈活,但多人合作的項(xiàng)目總不能全靠文檔說明和注釋去解釋你的意圖吧,相信效率的不滿意會(huì)讓你頭疼很長時(shí)間。

網(wǎng)上已經(jīng)有很多關(guān)于 Java 設(shè)計(jì)模式的文章書籍了,但是關(guān)于 Python 的文章書籍,雖然有很多大神也都提了,但是要么說的太不具體,要么總是站的高度太高,讓人摸不著頭腦。而這也是我做這個(gè)系列的原因。

害,廢話不多說。下面再和大家談?wù)勗O(shè)計(jì)模式的分類。

設(shè)計(jì)模式有低有高,低到日常的習(xí)慣技巧,高到框架架構(gòu),只要追究你在編程中的填坑原因,找到其中不變的部分,都可以歸到設(shè)計(jì)模式。

以現(xiàn)在主流的分類方法,按照設(shè)計(jì)模式的目的用途可將其分為三大類:創(chuàng)建型(Creational)、結(jié)構(gòu)型(Structural)和行為型(Behavioral)。

下面給大伙介紹一下分類后的設(shè)計(jì)模式。

創(chuàng)建型模式

這個(gè)類型的設(shè)計(jì)模式提供了創(chuàng)建對(duì)象的機(jī)制。這讓程序從根本上更具有靈活性和可復(fù)用性。

  • 單例模式(Singleton Pattern

  • 原型模式(Prototype Pattern

  • 工廠方法模式(Factory Method

  • 抽象工廠模式( Abstract Factory


結(jié)構(gòu)型模式


這個(gè)類型的設(shè)計(jì)模式關(guān)注類和對(duì)象的組合,介紹了如何讓類和對(duì)象在組成更大的結(jié)構(gòu)同時(shí),還具有靈活和高效的特點(diǎn)。

  • 裝飾模式(Decorator Pattern

  • 代理模式(Proxy Pattern

  • 外觀模式(Facade Pattern

  • 組合模式(Composite Pattern

  • 橋接模式(Bridge pattern

  • 享元模式(Flyweight Pattern

  • 適配器模式(Adapter pattern


行為模式

這個(gè)類型的設(shè)計(jì)模式負(fù)責(zé)對(duì)象間的通信,介紹了不同對(duì)象之間是怎樣交互和怎樣分配職責(zé)。

  • 策略模式(Strategy pattern

  • 狀態(tài)模式(State pattern

  • 命令模式(Command pattern

  • 責(zé)任鏈模式(Chain of responsibility pattern

  • 觀察者模式(Observer pattern

  • 備忘錄模式(Memento pattern

  • 迭代器模式(Iterator pattern

  • 解釋器模式(Interpreter pattern

  • 中介者模式(Mediator pattern

  • 訪問者模式(Visitor pattern

  • 模板方法模式(Template pattern

這么算下來,也有 22 種設(shè)計(jì)模式,Python 除了上面這些設(shè)計(jì)模式還有一些不是那么常見的模式,之后我也會(huì)補(bǔ)充過來,大家等著就好。


結(jié)尾

相信我,只有面向?qū)ο螅O(shè)計(jì)模式強(qiáng)強(qiáng)聯(lián)手,才能讓你的代碼變得更加可維護(hù)、可復(fù)用、可擴(kuò)展。

但有一點(diǎn)你要記在心里:設(shè)計(jì)模式本身并不關(guān)心具體的實(shí)現(xiàn)細(xì)節(jié),像算法和數(shù)據(jù)結(jié)構(gòu)這樣的東西完全由你這個(gè)施工者決定,只有將設(shè)計(jì)模式融會(huì)貫通到腦子里才行,一定不要死扣套路,那樣做只會(huì)讓你的代碼變得亂七八糟。



    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多