注冊(cè) | 登錄讀書(shū)好,好讀書(shū),讀好書(shū)!
讀書(shū)網(wǎng)-DuShu.com
當(dāng)前位置: 首頁(yè)出版圖書(shū)科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)軟件與程序設(shè)計(jì)Kotlin核心編程

Kotlin核心編程

Kotlin核心編程

定 價(jià):¥89.00

作 者: 水滴技術(shù)團(tuán)隊(duì) 著
出版社: 機(jī)械工業(yè)出版社
叢編項(xiàng):
標(biāo) 簽: 暫缺

購(gòu)買(mǎi)這本書(shū)可以去


ISBN: 9787111624318 出版時(shí)間: 2019-04-01 包裝: 平裝
開(kāi)本: 16開(kāi) 頁(yè)數(shù): 360 字?jǐn)?shù):  

內(nèi)容簡(jiǎn)介

  本書(shū)不是一本簡(jiǎn)單介紹Kotlin語(yǔ)法應(yīng)用的圖書(shū),而是一部專(zhuān)注于幫助讀者深入理解Kotlin的設(shè)計(jì)理念,指導(dǎo)讀者實(shí)現(xiàn)Kotlin高層次開(kāi)發(fā)的實(shí)戰(zhàn)型著作。書(shū)中深入介紹了Kotlin的核心語(yǔ)言特性、設(shè)計(jì)模式、函數(shù)式編程、異步開(kāi)發(fā)等內(nèi)容,并以Android和Web兩個(gè)平臺(tái)為背景,演示了Kotlin的實(shí)戰(zhàn)應(yīng)用。 全書(shū)共13章,分為4個(gè)部分: 熱身篇—Kotlin基礎(chǔ)(第1~2章),簡(jiǎn)單介紹了Kotlin設(shè)計(jì)哲學(xué)、生態(tài)及基礎(chǔ)語(yǔ)法,其中包括Kotlin與Scala、Java之間的關(guān)聯(lián)與對(duì)比,以及Kotlin的類(lèi)型聲明的特殊性、val和var的使用、高階函數(shù)的使用、面向表達(dá)式編程的使用、字符串的定義與操作等內(nèi)容; 下水篇—Kotlin核心(第3~8章),深入介紹了面向?qū)ο蟆⒋鷶?shù)數(shù)據(jù)類(lèi)型、模式匹配、類(lèi)型系統(tǒng)、Lambda、集合、多態(tài)、擴(kuò)展、元編程等Kotlin開(kāi)發(fā)核心知識(shí),這是本書(shū)的重點(diǎn),其中涉及很多開(kāi)發(fā)者特別關(guān)心的問(wèn)題,比如多繼承問(wèn)題、模式匹配問(wèn)題、用代數(shù)數(shù)據(jù)類(lèi)型抽象業(yè)務(wù)問(wèn)題、泛型問(wèn)題、反射問(wèn)題等。 潛入篇—Kotlin探索(第9~11章),探索Kotlin在設(shè)計(jì)模式、函數(shù)式編程、異步和并發(fā)等編程領(lǐng)域的應(yīng)用,其中包括對(duì)4大類(lèi)設(shè)計(jì)模式、Typeclass實(shí)現(xiàn)、函數(shù)式通用結(jié)構(gòu)設(shè)計(jì)、類(lèi)型替代異常處理、共享資源控制、CQRS架構(gòu)等重點(diǎn)內(nèi)容的深入剖析; 遨游篇—Kotlin實(shí)戰(zhàn)(第12~13章),著重演示了Kotlin在Android和Web平臺(tái)的實(shí)戰(zhàn)案例,其中涉及架構(gòu)方式、單向數(shù)據(jù)流模型、解耦視圖導(dǎo)航、響應(yīng)式編程、Spring 5響應(yīng)式框架和編程等內(nèi)容。

作者簡(jiǎn)介

  水滴技術(shù)團(tuán)隊(duì) 核心成員來(lái)自阿里巴巴、淘寶,公司旗下的大數(shù)據(jù)SaaS類(lèi)產(chǎn)品服務(wù)了Booking、阿里集團(tuán)、小米集團(tuán)、大疆創(chuàng)新、拍拍貸等幾十萬(wàn)家企業(yè),是微信的重點(diǎn)第三方合作產(chǎn)品。 推崇函數(shù)式編程,喜歡嘗試各種新的前后端技術(shù)。團(tuán)隊(duì)在2015年就實(shí)現(xiàn)了業(yè)界領(lǐng)先的全異步開(kāi)發(fā)架構(gòu),該架構(gòu)是基于fp Scala及微服務(wù)化的分布式系統(tǒng)。同時(shí),水滴技術(shù)團(tuán)隊(duì)還是國(guó)內(nèi)外少有的pure fp技術(shù)團(tuán)隊(duì),采用了如Play! Framework、Akka、Cats等新潮的技術(shù),并對(duì)JVM生態(tài)的一些編程語(yǔ)言有著較豐富的實(shí)戰(zhàn)經(jīng)驗(yàn),當(dāng)前主要為Scala、Kotlin社區(qū)輸出博客和開(kāi)源項(xiàng)目。章建良(網(wǎng)名:Jilen) 水滴技術(shù)團(tuán)隊(duì)核心成員,杭州極跑科技聯(lián)合創(chuàng)始人,曾就職于淘寶。從2008年開(kāi)始,活躍于Scala社區(qū),在函數(shù)式編程和并發(fā)領(lǐng)域擁有極豐富的實(shí)戰(zhàn)經(jīng)驗(yàn)。 此外,他還是開(kāi)源項(xiàng)目Quill的核心貢獻(xiàn)者,目前正在創(chuàng)造一個(gè)純函數(shù)式的異步數(shù)據(jù)庫(kù)驅(qū)動(dòng)asyncdb。

圖書(shū)目錄

前言
熱身篇 Kotlin基礎(chǔ)
第1章 認(rèn)識(shí)Kotlin2
1.1 Java的發(fā)展2
1.1.1 Java 8的探索3
1.1.2 Java未來(lái)的樣子3
1.2 Scala的百寶箱3
1.2.1 學(xué)術(shù)和工業(yè)的平衡4
1.2.2 復(fù)合但不復(fù)雜4
1.2.3 簡(jiǎn)單卻不容易5
1.3 Kotlin—改良的Java5
1.3.1 Kotlin的實(shí)用主義6
1.3.2 更好的Java6
1.3.3 強(qiáng)大的生態(tài)8
1.4 本章小結(jié)8
第2章 基礎(chǔ)語(yǔ)法10
2.1 不一樣的類(lèi)型聲明10
2.1.1 增強(qiáng)的類(lèi)型推導(dǎo)11
2.1.2 聲明函數(shù)返回值類(lèi)型11
2.2 val和var的使用規(guī)則13
2.2.1 val的含義:引用不可變13
2.2.2 優(yōu)先使用val來(lái)避免副作用14
2.2.3 var的適用場(chǎng)景15
2.3 高階函數(shù)和Lambda16
2.3.1 抽象和高階函數(shù)17
2.3.2 實(shí)例:函數(shù)作為參數(shù)的需求17
2.3.3 函數(shù)的類(lèi)型19
2.3.4 方法和成員引用21
2.3.5 匿名函數(shù)22
2.3.6 Lambda是語(yǔ)法糖22
2.3.7 函數(shù)、Lambda和閉包25
2.3.8 “柯里化”風(fēng)格、擴(kuò)展函數(shù)26
2.4 面向表達(dá)式編程29
2.4.1 表達(dá)式比語(yǔ)句更安全30
2.4.2 Unit類(lèi)型:讓函數(shù)調(diào)用皆為表達(dá)式32
2.4.3 復(fù)合表達(dá)式:更好的表達(dá)力33
2.4.4 枚舉類(lèi)和when表達(dá)式34
2.4.5 for循環(huán)和范圍表達(dá)式37
2.4.6 中綴表達(dá)式39
2.5 字符串的定義和操作41
2.5.1 定義原生字符串41
2.5.2 字符串模板42
2.5.3 字符串判等43
2.6 本章小結(jié)43
下水篇 Kotlin核心
第3章 面向?qū)ο?6
3.1 類(lèi)和構(gòu)造方法46
3.1.1 Kotlin中的類(lèi)及接口46
3.1.2 更簡(jiǎn)潔地構(gòu)造類(lèi)的對(duì)象49
3.1.3 主從構(gòu)造方法55
3.2 不同的訪問(wèn)控制原則56
3.2.1 限制修飾符57
3.2.2 可見(jiàn)性修飾符61
3.3 解決多繼承問(wèn)題64
3.3.1 騾子的多繼承困惑64
3.3.2 接口實(shí)現(xiàn)多繼承65
3.3.3 內(nèi)部類(lèi)解決多繼承問(wèn)題的方案67
3.3.4 使用委托代替多繼承69
3.4 真正的數(shù)據(jù)類(lèi)71
3.4.1 煩瑣的JavaBean 71
3.4.2 用data class創(chuàng)建數(shù)據(jù)類(lèi) 73
3.4.3 copy、componentN與解構(gòu)75
3.4.4 數(shù)據(jù)類(lèi)的約定與使用78
3.5 從static到object79
3.5.1 什么是伴生對(duì)象79
3.5.2 天生的單例:object81
3.5.3 object表達(dá)式82
3.6 本章小結(jié)84
第4章 代數(shù)數(shù)據(jù)類(lèi)型和模式匹配85
4.1 代數(shù)數(shù)據(jù)類(lèi)型85
4.1.1 從代數(shù)到類(lèi)型86
4.1.2 計(jì)數(shù)87
4.1.3 積類(lèi)型87
4.1.4 和類(lèi)型與密封類(lèi)88
4.1.5 構(gòu)造代數(shù)數(shù)據(jù)類(lèi)型89
4.2 模式匹配90
4.2.1 何為模式91
4.2.2 常見(jiàn)的模式92
4.2.3 處理嵌套表達(dá)式93
4.2.4 通過(guò)Scala找點(diǎn)靈感95
4.2.5 用when力挽狂瀾97
4.3 增強(qiáng) Kotlin 的模式匹配99
4.3.1 類(lèi)型測(cè)試/類(lèi)型轉(zhuǎn)換99
4.3.2 面向?qū)ο蟮姆纸?00
4.3.3 訪問(wèn)者設(shè)計(jì)模式102
4.3.4 總結(jié)104
4.4 用代數(shù)數(shù)據(jù)類(lèi)型來(lái)抽象業(yè)務(wù)105
4.4.1 從一個(gè)實(shí)際需求入手105
4.4.2 糟糕的設(shè)計(jì)105
4.4.3 利用ADT106
4.4.4 更高層次的抽象108
4.5 本章總結(jié)110
第5章 類(lèi)型系統(tǒng)112
5.1 null引用:10億美元的錯(cuò)誤112
5.1.1 null做了哪些惡112
5.1.2 如何解決NPE問(wèn)題114
5.2 可空類(lèi)型115
5.2.1 Java 8中的Optional115
5.2.2 Kotlin的可空類(lèi)型118
5.2.3 類(lèi)型檢查121
5.2.4 類(lèi)型智能轉(zhuǎn)換122
5.3 比Java更面向?qū)ο蟮脑O(shè)計(jì)124
5.3.1 Any:非空類(lèi)型的根類(lèi)型124
5.3.2 Any?:所有類(lèi)型的根類(lèi)型127
5.3.3 Nothing與Nothing?128
5.3.4 自動(dòng)裝箱與拆箱128
5.3.5 “新”的數(shù)組類(lèi)型129
5.4 泛型:讓類(lèi)型更加安全130
5.4.1 泛型:類(lèi)型安全的利刃130
5.4.2 如何在Kotlin中使用泛型131
5.4.3 類(lèi)型約束:設(shè)定類(lèi)型上界133
5.5 泛型的背后:類(lèi)型擦除135
5.5.1 Java為什么無(wú)法聲明一個(gè)泛型數(shù)組135
5.5.2 向后兼容的罪136
5.5.3 類(lèi)型擦除的矛盾138
5.5.4 使用內(nèi)聯(lián)函數(shù)獲取泛型139
5.6 打破泛型不變140
5.6.1 為什么List不能賦值給List140
5.6.2 一個(gè)支持協(xié)變的List141
5.6.3 一個(gè)支持逆變的Comparator143
5.6.4 協(xié)變和逆變144
5.7 本章小結(jié)147
第6章 Lambda和集合148
6.1 Lambda簡(jiǎn)化表達(dá)148
6.1.1 調(diào)用Java的函數(shù)式接口148
6.1.2 帶接收者的Lambda149
6.1.3 with和apply150
6.2 集合的高階函數(shù)API151
6.2.1 以簡(jiǎn)馭繁:map151
6.2.2 對(duì)集合進(jìn)行篩選:filter、count152
6.2.3 別樣的求和方式:sumBy、sum、fold、reduce154
6.2.4 根據(jù)學(xué)生性別進(jìn)行分組:groupBy156
6.2.5 扁平化—處理嵌套集合:flatMap、flatten157
6.3 集合庫(kù)的設(shè)計(jì)159
6.3.1 集合的繼承關(guān)系159
6.3.2 可變集合與只讀集合160
6.4 惰性集合163
6.4.1 通過(guò)序列提高效率163
6.4.2 序列的操作方式164
6.4.3 序列可以是無(wú)限的166
6.4.4 序列與Java 8 Stream對(duì)比166
6.5 內(nèi)聯(lián)函數(shù)167
6.5.1 優(yōu)化Lambda開(kāi)銷(xiāo)168
6.5.2 內(nèi)聯(lián)函數(shù)具體語(yǔ)法169
6.5.3 noinline:避免參數(shù)被內(nèi)聯(lián)171
6.5.4 非局部返回172
6.5.5 crossinline174
6.5.6 具體化參數(shù)類(lèi)型174
6.6 本章小結(jié)175
第7章 多態(tài)和擴(kuò)展176
7.1 多態(tài)的不同方式176
7.1.1 子類(lèi)型多態(tài)176
7.1.2 參數(shù)多態(tài)177
7.1.3 對(duì)第三方類(lèi)進(jìn)行擴(kuò)展178
7.1.4 特設(shè)多態(tài)與運(yùn)算符重載178
7.2 擴(kuò)展:為別的類(lèi)添加方法、屬性179
7.2.1 擴(kuò)展與開(kāi)放封閉原則179
7.2.2 使用擴(kuò)展函數(shù)、屬性180
7.2.3 擴(kuò)展的特殊情況183
7.2.4 標(biāo)準(zhǔn)庫(kù)中的擴(kuò)展函數(shù):run、let、also、takeIf186
7.3 Android中的擴(kuò)展應(yīng)用188
7.3.1 優(yōu)化Snackbar188
7.3.2 用擴(kuò)展函數(shù)封裝Utils189
7.3.3 解決煩人的findViewById190
7.4 擴(kuò)展不是萬(wàn)能的193
7.4.1 調(diào)度方式對(duì)擴(kuò)展函數(shù)的影響193
7.4.2 被濫用的擴(kuò)展函數(shù)196
7.5 本章小結(jié)197
第8章 元編程198
8.1 程序和數(shù)據(jù)199
8.1.1 什么是元編程199
8.1.2 常見(jiàn)的元編程技術(shù)201
8.2 Kotlin的反射202
8.2.1 Kotlin和Java反射202
8.2.2 Kotlin的KClass205
8.2.3 Kotlin的KCallable206
8.2.4 獲取參數(shù)信息208
8.3 Kotlin的注解210
8.3.1 無(wú)處不在的注解211
8.3.2 精確控制注解的位置212
8.3.3 獲取注解信息213
8.4 本章小結(jié)216
潛入篇 Kotlin探索
第9章 設(shè)計(jì)模式218
9.1 創(chuàng)建型模式218
9.1.1 伴生對(duì)象增強(qiáng)工廠模式219
9.1.2 內(nèi)聯(lián)函數(shù)簡(jiǎn)化抽象工廠222
9.1.3 用具名可選參數(shù)而不是構(gòu)建者模式224
9.2 行為型模式228
9.2.1 Kotlin中的觀察者模式228
9.2.2 高階函數(shù)簡(jiǎn)化策略模式、模板方法模式231
9.2.3 運(yùn)算符重載和迭代器模式235
9.2.4 用偏函數(shù)實(shí)現(xiàn)責(zé)任鏈模式237
9.2.5 ADT實(shí)現(xiàn)狀態(tài)模式241
9.3 結(jié)構(gòu)型模式244
9.3.1 裝飾者模式:用類(lèi)委托減少樣板代碼245
9.3.2 通過(guò)擴(kuò)展代替裝飾者246
9.4 本章小結(jié)248
第10章 函數(shù)式編程249
10.1 函數(shù)式編程的特征249
10.1.1 函數(shù)式語(yǔ)言之爭(zhēng)250
10.1.2 純函數(shù)與引用透明性251
10.1.3 代換模型與惰性求值253
10.2 實(shí)現(xiàn)Typeclass254
10.2.1 高階類(lèi)型:用類(lèi)型構(gòu)造新類(lèi)型255
10.2.2 高階類(lèi)型和Typeclass256
10.2.3 用擴(kuò)展方法實(shí)現(xiàn)Typeclass257
10.2.4 Typeclass設(shè)計(jì)常見(jiàn)功能258
10.3 函數(shù)式通用結(jié)構(gòu)設(shè)計(jì)262
10.3.1 Monoid262
10.3.2 Monad264
10.3.3 Monad組合副作用269
10.4 類(lèi)型代替異常處理錯(cuò)誤271
10.4.1 Option與OptionT272
10.4.2 Either與EitherT276
10.5 本章小結(jié)279
第11章 異步和并發(fā)281
11.1 同步到異步281
11.1.1 同步與阻塞的代價(jià)281
11.1.2 利用異步非阻塞來(lái)提高效率284
11.1.3 回調(diào)地獄284
11.2 Kotlin的Coroutine286
11.2.1 多線程一定優(yōu)于單線程嗎287
11.2.2 協(xié)程:一個(gè)更輕量級(jí)的“線程”287
11.2.3 合理地使用協(xié)程288
11.2.4 用同步方式寫(xiě)異步代碼290
11.3 共享資源控制293
11.3.1 鎖模式293
11.3.2 Actor:有狀態(tài)的并行計(jì)算單元296
11.4 CQRS架構(gòu)302
11.4.1 Event Sourcing事件溯源—記錄對(duì)象操作軌跡302
11.4.2 Kotlin with Akka Persistence-Actor304
11.5 本章小結(jié)310
遨游篇 Kotlin實(shí)戰(zhàn)
第12章 基于Kotlin的Android架構(gòu)314
12.1 架構(gòu)方式的演變314
12.1.1 經(jīng)典的 MVC 問(wèn)題315
12.1.2 MVP316
12.1.3 MVVM320
12.2 單向數(shù)據(jù)流模型327
12.2.1 Redux327
12.2.2 單向數(shù)據(jù)流的優(yōu)勢(shì)329
12.3 ReKotlin331
12.3.1 初見(jiàn) ReKotlin331
12.3.2 創(chuàng)建基于ReKotlin的項(xiàng)目332
12.4 解耦視圖導(dǎo)航341
12.4.1 傳統(tǒng)導(dǎo)航的問(wèn)題341
12.4.2 rekotlin-router342
12.5 本章小結(jié)343
第13章 開(kāi)發(fā)響應(yīng)式Web應(yīng)用345
13.1 響應(yīng)式編程的關(guān)鍵:非阻塞異步編程模型345
13.1.1 使用CompletableFuture實(shí)現(xiàn)異步非阻塞346
13.1.2 使用RxKotlin進(jìn)行響應(yīng)式編程347
13.1.3 響應(yīng)式Web編程框架348
13.2 Spring 5:響應(yīng)式Web框架349
13.2.1 支持響應(yīng)式編程349
13.2.2 適配Kotlin350
13.2.3 函數(shù)式路由351
13.2.4 異步數(shù)據(jù)庫(kù)驅(qū)動(dòng)353
13.3 Spring 5響應(yīng)式編程實(shí)戰(zhàn)354
13.4 本章小結(jié)360

本目錄推薦

掃描二維碼
Copyright ? 讀書(shū)網(wǎng) www.talentonion.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)