日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

Java进阶 | 从整体上观察面向对象

發(fā)布時(shí)間:2025/3/16 java 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java进阶 | 从整体上观察面向对象 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、面向?qū)ο?/h1>

面向?qū)ο笫荍ava編程中最核心的思想,基本特征:繼承、封裝、多態(tài)。

1、特征之封裝

將結(jié)構(gòu)、數(shù)據(jù)、操作封裝在對(duì)象實(shí)體中,使用時(shí)可以不關(guān)注對(duì)象內(nèi)部結(jié)構(gòu),只能訪問開放權(quán)限的功能入口,從而降低程序耦合程度,提供安全性和可持續(xù)維護(hù)性。

public class Concept01 {public static void main(String[] args) {Student student = new Student("張三","高三",29f);student.conclusion();} } class Student {private String name ;private String grade ;private Float score ;public Student(String name, String grade, Float score) {this.name = name;this.grade = grade;this.score = score;}public void conclusion (){System.out.println("姓名:"+this.getName());System.out.println("年級(jí):"+this.getGrade());System.out.println("分?jǐn)?shù):"+this.getGrade());if (this.getScore() >= 100.0f){System.out.println("評(píng)語(yǔ):本學(xué)期優(yōu)等生");} else {System.out.println("評(píng)語(yǔ):本學(xué)期潛力股");}} }

案例描述Student的學(xué)期總結(jié),通過構(gòu)造方法構(gòu)建具體的學(xué)生對(duì)象,并且只通過conclusion方法獲取學(xué)生學(xué)期評(píng)價(jià)。

2、特征之繼承

子類除了提供自身的能力之外,還可以通過繼承的方式獲取父類開放的屬性和方法,以增強(qiáng)自身的功能。

public class Concept02 {public static void main(String[] args) {// 判斷 Digital 是 Phone 父類System.out.println(Digital.class.isAssignableFrom(Phone.class));} } class Digital {} class Phone extends Digital{}

這里通過isAssignableFrom方法判斷Digital是Phone父類。

3、特征之多態(tài)

不同主體類對(duì)同一個(gè)動(dòng)作給出不同的實(shí)現(xiàn)方式,多態(tài)也是Java描述設(shè)計(jì)模式的常用手段,最直接的作用就是程序解耦。

public class Concept03 {public static void main(String[] args) {Animal animalDog = new Dog();Animal animalCat = new Cat();animalDog.voice();animalCat.voice();} } class Animal {public void voice () {System.out.println("Animal ... voice");} } class Dog extends Animal {@Overridepublic void voice() {System.out.println("Dog ... Wang wang");} } class Cat extends Animal {@Overridepublic void voice() {System.out.println("Cat ... Meow meow");} }

通常動(dòng)物都有發(fā)出聲音的能力,但是不同動(dòng)物聲音不同,這里基于多態(tài)實(shí)現(xiàn),不同動(dòng)物的聲音特征。

二、關(guān)系圖譜

在了解面向?qū)ο笾?#xff0c;還需要理解一下基礎(chǔ)的關(guān)系模型,在實(shí)際的業(yè)務(wù)中都是基于這些基礎(chǔ)的關(guān)系解決場(chǎng)景問題。

1、繼承與實(shí)現(xiàn)

繼承關(guān)系:強(qiáng)調(diào)屬性和方法從父類向子類的傳承。實(shí)現(xiàn)關(guān)系:強(qiáng)調(diào)描述抽象和具體實(shí)現(xiàn)的邏輯。

/*** 繼承*/ class classA {} class classB extends classA {} interface interfaceA {} interface interfaceB extends interfaceA {} /*** 實(shí)現(xiàn)*/ class classC implements interfaceA,interfaceB{}

2、依賴與關(guān)聯(lián)

依賴關(guān)系:常用來描述方法局部變量或者入?yún)?#xff0c;即類的方法中調(diào)用了另一個(gè)類。關(guān)聯(lián)關(guān)系:類的成員變量是另一個(gè)類,比如常見的一對(duì)一,一對(duì)多關(guān)系。

/*** 依賴*/ class RelyA {} class RelyB {public void depend (RelyA rely){} } /*** 關(guān)聯(lián)*/ class AssociateA {} class AssociateB {private AssociateA associateA ; }

3、組合與聚合

聚合關(guān)系:描述整體與部分的關(guān)系,但是部分不需要依賴整體存在。組合關(guān)系:描述整體與部分的關(guān)系,但是部分需要依賴整體存在。

/*** 聚合*/ class ElementA {} class ElementB {} class Aggregation {private ElementA elementA ;private ElementB elementB ; } /*** 組合*/ class PortionA{} class PortionB{} class Composition {private PortionA portionA ;private PortionB portionB ; }

三、模式與原則

在面對(duì)復(fù)雜業(yè)務(wù)時(shí),可以時(shí)常參考設(shè)計(jì)模式和基本原則,以此設(shè)計(jì)合理的業(yè)務(wù)結(jié)構(gòu),實(shí)現(xiàn)代碼的高內(nèi)聚低耦合,但是在一些特定場(chǎng)景下,也要果斷的突破這些模板或原則,可以更好的支撐業(yè)務(wù)。

1、設(shè)計(jì)模式

創(chuàng)建模式

抽象對(duì)象實(shí)例化的創(chuàng)建過程,對(duì)不同類型的對(duì)象提供高效的管理方式與合理的創(chuàng)建手段。

  • 單例模式
  • 原型模式
  • 工廠模式
  • 建造者模式

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

設(shè)計(jì)類的組裝模式,合理的對(duì)象結(jié)構(gòu),有利于支持業(yè)務(wù)的持續(xù)迭代,結(jié)構(gòu)會(huì)直接影響代碼的可持續(xù)維護(hù)性。

  • 代理模式
  • 外觀模式
  • 適配器模式
  • 裝飾者模式
  • 組合模式
  • 享元模式
  • 橋梁模式

行為模式

行為模式涉及對(duì)象職責(zé)定義,通信協(xié)作,和最具體的業(yè)務(wù)邏輯實(shí)現(xiàn),明確程序運(yùn)行時(shí)的流程軌跡。

可以基于繼承或?qū)崿F(xiàn)的方式控制不同類的行為職責(zé),即頂層抽象控制行為,下層逐級(jí)做具體邏輯實(shí)現(xiàn);或者直接聚合管理責(zé)任對(duì)象,做統(tǒng)一分配。

  • 觀察者模式
  • 模版方法模式
  • 策略模式
  • 命令模式
  • 調(diào)停者模式
  • 備忘錄模式
  • 解釋器模式
  • 迭代器模式
  • 狀態(tài)模式
  • 責(zé)任鏈模式
  • 訪問者模式

2、基本原則

  • 開閉原則:在做代碼結(jié)構(gòu)設(shè)計(jì)時(shí),應(yīng)該考慮對(duì)擴(kuò)展開放,對(duì)修改關(guān)閉,抽象思維搭建結(jié)構(gòu),具體實(shí)現(xiàn)擴(kuò)展細(xì)節(jié)。

  • 單一職責(zé):一個(gè)類應(yīng)該只負(fù)責(zé)一項(xiàng)職責(zé);減少代碼一處變更引起的程序大規(guī)模改動(dòng)情況,降低類的復(fù)雜度;

  • 接口隔離:每一個(gè)接口應(yīng)該是一種角色;盡量避免具體實(shí)現(xiàn)類中用不到但是又必須實(shí)現(xiàn)的方法;

  • 依賴倒轉(zhuǎn):上層模塊不應(yīng)該依賴下層模塊,抽象邏輯不應(yīng)該依賴具體細(xì)節(jié),即中心思想是面向接口編程。

  • 里氏替換:繼承時(shí)遵循里氏替換原則,子類中盡量不要重寫父類的方法,可以擴(kuò)展父類的功能;

  • 迪米特原則:最少知道原則即類對(duì)象對(duì)其依賴的類知道的越少越好,以此降低耦合程度;

  • 組合/聚合復(fù)用:新對(duì)象應(yīng)使用部分已有的對(duì)象,使其成為新對(duì)象組成部分,實(shí)現(xiàn)已有功能的復(fù)用,以此降低單個(gè)類的復(fù)雜程度。

四、業(yè)務(wù)應(yīng)用

在業(yè)務(wù)開發(fā)中,很多復(fù)雜的邏輯都是基于面向?qū)ο蟮乃枷胱龅脑O(shè)計(jì)和具體實(shí)現(xiàn),但是在實(shí)際上業(yè)務(wù)是不斷變化的,所以不管是常用的Mvc模式,或者領(lǐng)域設(shè)計(jì),只要經(jīng)過多個(gè)版本迭代,多人參與的開發(fā),到最后代碼在邏輯層面都會(huì)讓人著迷。

也就是常說的一種現(xiàn)象:新人重構(gòu),老人不斷修復(fù)問題,然而鐵打的問題,流水的開發(fā),但凡經(jīng)歷過重構(gòu)的同學(xué)都知道,所謂的大規(guī)模重構(gòu)很難徹底解決問題,甚至這是個(gè)循環(huán)動(dòng)作。所以業(yè)務(wù)代碼更多是在那個(gè)版本周期內(nèi)是合理的,站在一個(gè)開發(fā)的角度,這里也可以理解為筆者個(gè)人角度,通常從下面幾個(gè)角度去思考具體的業(yè)務(wù)開發(fā):

  • 規(guī)范約束

這是個(gè)人認(rèn)為業(yè)務(wù)工程中最重要的基礎(chǔ),不管業(yè)務(wù)如何復(fù)雜,都離不開與之相應(yīng)的數(shù)據(jù)增刪改查,所以對(duì)常規(guī)基礎(chǔ)操作做好統(tǒng)一代碼風(fēng)格管理,這樣有助于別人快速理解整體結(jié)構(gòu)和邏輯。

這里風(fēng)格指:接口命名,參數(shù),組件,中間件等統(tǒng)一,以持久層為例,避免多個(gè)組件混用的情況,如果是周期相對(duì)較長(zhǎng)的項(xiàng)目,經(jīng)常看到單是分頁(yè)查詢的實(shí)現(xiàn)邏輯都有多種情況。

  • 可復(fù)用性

易變是業(yè)務(wù)本身的特點(diǎn),所以高度復(fù)用的業(yè)務(wù)代碼本身就存在很大的限制,例如常見的很多方法,為了適配各種場(chǎng)景,不斷擴(kuò)展入?yún)?#xff0c;然后有些特殊業(yè)務(wù)也會(huì)進(jìn)行特殊傳參。

還有一些開發(fā)常說的,能用一個(gè)接口實(shí)現(xiàn),絕對(duì)不使用兩個(gè)接口,看似很有個(gè)性,實(shí)際已經(jīng)走在挖坑的路上,多個(gè)功能請(qǐng)求同一個(gè)接口,即意味著任何接口的改動(dòng)都要考慮很多邏輯的適配。

所以從上層向下看,不必過度考慮復(fù)用,從下向上看,底層的改動(dòng)相對(duì)較少,應(yīng)該考慮復(fù)用。

  • 業(yè)務(wù)分層

從項(xiàng)目生命周期的角度思考,業(yè)務(wù)是一個(gè)迭代的過程,不需要過度前衛(wèi)的設(shè)計(jì),項(xiàng)目的生命周期是多久沒人知道,最穩(wěn)妥的做法是快速迭代,產(chǎn)品和技術(shù)工程能快速穩(wěn)定的支撐業(yè)務(wù)發(fā)展即可。

經(jīng)典的業(yè)務(wù)分層管理是快速迭代的基本支撐,例如常用的Mvc模式,在復(fù)雜的業(yè)務(wù)場(chǎng)景下可以再次細(xì)化管理,或者向領(lǐng)域設(shè)計(jì)靠近。

  • 流程分段

業(yè)務(wù)可以理解為流程管理,小的流程通常service中可以直接處理,但是復(fù)雜流程則十分講究設(shè)計(jì),一個(gè)基礎(chǔ)思想就是分段管理,比較經(jīng)典的案例就是下單:構(gòu)建結(jié)算頁(yè)面時(shí)初始化訂單-支付時(shí)訂單提交-支付成功才會(huì)執(zhí)行訂單。

  • 細(xì)節(jié)問題

邏輯上的細(xì)節(jié)要持續(xù)追求嚴(yán)謹(jǐn),業(yè)務(wù)實(shí)現(xiàn)手段和思路適當(dāng)放寬,流程經(jīng)得起考驗(yàn),底層實(shí)現(xiàn)合理的復(fù)用,組件選擇上應(yīng)該站在高緯度,就基本足以。

五、源代碼地址

GitHub·地址 https://github.com/cicadasmile/java-base-parent GitEE·地址 https://gitee.com/cicadasmile/java-base-parent

閱讀標(biāo)簽

【Java基礎(chǔ)】【設(shè)計(jì)模式】【結(jié)構(gòu)與算法】【Linux系統(tǒng)】【數(shù)據(jù)庫(kù)】

【分布式架構(gòu)】【微服務(wù)】【大數(shù)據(jù)組件】【SpringBoot進(jìn)階】【Spring&Boot基礎(chǔ)】

【數(shù)據(jù)分析】【技術(shù)導(dǎo)圖】【 職場(chǎng)】

總結(jié)

以上是生活随笔為你收集整理的Java进阶 | 从整体上观察面向对象的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 91亚洲国产成人精品性色 | 二区免费视频 | 亚洲一道本 | 日本精品一区二区三区四区的功能 | 日韩欧美综合视频 | 伊人色影院 | 中国av一区二区 | 色老头一区二区 | www视频在线免费观看 | 日韩精品一区二区亚洲av性色 | 久久综合第一页 | 猛1被调教成公厕尿便失禁网站 | 亚洲精品人妻无码 | 国产精品.xx视频.xxtv | 国产精品成av人在线视午夜片 | 中文字幕在线观看国产 | 玖玖在线免费视频 | 森泽佳奈av | www.中文字幕 | 操天天| 日韩第九页 | 男人视频网 | 国产精品第72页 | 老熟女毛茸茸浓毛 | 黄色高清视频在线观看 | 国产又粗又黄又爽 | 欧美在线你懂的 | 蜜桃传媒一区二区亚洲av | 草草视频在线观看 | 亚洲黄视频 | 日韩毛片无码永久免费看 | 老司机激情视频 | 亚洲高清在线播放 | 中日韩在线 | 国产亚洲一区二区三区不卡 | 朝桐光在线播放 | 亚洲乱码国产乱码精品精的特点 | 中文字幕国产亚洲 | 毛片毛片女人毛片毛片 | 噜噜狠狠狠狠综合久久 | 亚洲精品一区二三区不卡 | 成人影视免费 | 欧美一级啪啪 | 欧美日韩精品一二三区 | 国产又色又爽无遮挡免费 | 亚洲精品久久久乳夜夜欧美 | 精品3p | wwwxxxx国产| 在线观看99| 欧美精产国品一二三区 | 天堂社区av | 成人7777 | 91天堂网 | 91亚洲视频在线观看 | 黑人一区二区 | 亚洲三级久久 | 精品一级少妇久久久久久久 | www.激情网 | 国产小视频网址 | 户外露出一区二区三区 | 大尺度做爰呻吟舌吻网站 | 激情伦成人综合小说 | www.麻豆av | 中文国语毛片高清视频 | 日韩精品第二页 | av三级网站 | 草草福利视频 | 毛片国产 | 男男车车的车车网站w98免费 | 国产女人18水真多18精品一级做 | 天天干天天日 | 找国产毛片看 | 我和单位漂亮少妇激情 | 337p粉嫩色噜噜噜大肥臀 | 免费看久久| 中国黄色录像一级片 | 欧美一级欧美三级在线观看 | 日韩一区二区在线观看视频 | 国产精品剧情av | 天天摸日日摸狠狠添 | 日本一区二区高清免费 | 天天色天天插 | 日韩精品一区二区电影 | 青草福利| 天堂精品 | 91亚洲精品久久久蜜桃 | 中文字幕无码精品亚洲35 | 日本高清不卡二区 | 小镇姑娘高清播放视频 | 韩国日本欧美一区 | 肥臀熟女一区二区三区 | 一区福利视频 | 黄色网址av | 欧美与黑人午夜性猛交久久久 | 婷婷激情五月 | 六月丁香激情综合 | 日本色视 | 久久久av一区二区三区 | a级片网站 |