I want to fly higher
programming Explorer
BlogJava
首頁
新隨筆
新文章
聯(lián)系
聚合
管理
posts - 114,comments - 263,trackbacks - 0
<
2016年11月
>
日
一
二
三
四
五
六
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
常用鏈接
我的隨筆
我的文章
我的評論
我的參與
最新評論
留言簿
(5)
給我留言
查看公開留言
查看私人留言
隨筆分類
(161)
Book(25)
ClassLoader(5)
Concurrency
Dababase
GameServer(10)
HighPerformance
HotSwap(9)
IO
JVM(6)
Language(2)
Mobile
NetWork(2)
NoSQL
Note(8)
OS(6)
Program(69)
Script(1)
ServerFramework(6)
Shell
Sources(8)
Translations
Utils(4)
隨筆檔案
(114)
2018年6月 (1)
2018年3月 (1)
2017年3月 (2)
2017年2月 (2)
2017年1月 (1)
2016年11月 (2)
2016年7月 (4)
2016年6月 (3)
2016年5月 (2)
2015年12月 (2)
2015年10月 (1)
2015年8月 (1)
2015年7月 (4)
2015年6月 (5)
2014年12月 (1)
2014年11月 (4)
2014年4月 (1)
2014年3月 (3)
2014年2月 (5)
2014年1月 (1)
2013年12月 (7)
2013年11月 (4)
2013年8月 (5)
2013年7月 (3)
2013年3月 (6)
2013年1月 (6)
2012年7月 (1)
2011年12月 (9)
2011年8月 (2)
2011年5月 (1)
2011年2月 (2)
2011年1月 (1)
2010年12月 (2)
2010年11月 (1)
2010年7月 (8)
2010年4月 (3)
2010年3月 (3)
2010年2月 (2)
2010年1月 (2)
文章分類
(2)
學習筆記(2)
文章檔案
(2)
2011年12月 (2)
Alibaba
搜索技術博客-淘寶
淘寶開源項目
阿里中間件團隊博客
阿里技術嘉年華
阿里核心系統(tǒng)團隊博客
Comprehensive
InfoQ - 促進軟件開發(fā)領域知識與創(chuàng)新的傳播
LinkedIn
stackoverflow
伯樂在線
內存-溢出 為程序員服務
騰訊大講堂
解道
Expert
jrebel
國外牛博
并發(fā)編程高手
莊周夢蝶
洞庭散人
美團技術博客
褚霸
Game
云風
Java
JavaEye做最棒的軟件開發(fā)交流社區(qū)
coderanch
IBM developerWorks 中國 Java 技術專區(qū)
Java Tutorials
Javalobby
javapapers
java-source
java-tips
javaworld
Java極客
Java譯站
Programming Tutorial
TheServerSide
專注Java & Android 技術分享
并發(fā)編程網(wǎng)
搜索
積分與排名
積分 - 599795
排名 - 78
最新評論
1.?re: Eclipse反編譯工具Jad及插件JadClipse配置
剛剛問題解決了,file types中, .class下還有一個 .class without source。
把這個也設置成JadClipse為默認選項打開嘛,即可。
謝謝版主~~~
--tangyuan
2.?re: Eclipse反編譯工具Jad及插件JadClipse配置
eclipse4.6版本,按照上述來的不行,版主還有推薦的反編工具嘛,推薦一個呢
--tangyuan
3.?re: 交換兩個值,不用臨時變量(C位運算)[未登錄]
評論內容較長,點擊標題查看
--123
4.?re: Markdown基礎語法及發(fā)布blog
確實很基礎的語法,很容易就學會了!
--有機綠茶
5.?re: Java8之Stream/Map[未登錄]
總結的很詳細!
--jay
閱讀排行榜
1.?Eclipse反編譯工具Jad及插件JadClipse配置(134367)
2.?Unknown Source的出現(xiàn)及解決(39533)
3.?MMORPG服務器架構(33490)
4.?Java8之Stream/Map(24542)
5.?淺談Eclipse dropins插件安裝的"坑"(附m2e的各個版本插件下載)(19643)
oop-模式-架構設計基礎(一)
示例切入(鴨子游戲)
游戲中會有各種鴨子,一邊游泳,一邊咕咕叫
設計了一個鴨子的抽象基類,并讓各種鴨子繼承此基類
如果讓
鴨子飛
,怎么辦?
問題
并非所有的鴨子都能飛,在基類中增加fly會導致所有的子類都具備fly,連那些不該具備fly的子類也無法排除
非常粗暴的解決辦法就是每個子類都要仔細判斷是否要覆寫相關邏輯,比如不會飛的鴨子那么覆寫fly方法,什么事情都不做即可;如果遇到不是咕咕叫的鴨子,則覆寫quack方法
繼承的缺點
代碼在多個子類中重復
很難知道所有鴨子的全部行為
運行時的行為不容易改變
改變會牽一發(fā)動全身
每當新增新的鴨子子類,需要被迫檢查并可能需要覆蓋fly和quack方法--噩夢啊
使用接口
把fly從基類中抽出來,放進一個Flyable接口,只有會飛的鴨子才實現(xiàn)此接口;同樣的方式,設計一個Quackable接口,因為并非所有鴨子都會叫
問題
解決了一部分問題,不會再有“會飛的橡皮鴨(繼承方式)”
但無法進行代碼復用-如后續(xù)幾十個能飛的鴨子的飛行邏輯一致,不但每一個子類都需要寫一遍(大量重復的代碼)而且如果修改飛行邏輯的話,則需要全部都修改一遍
歸零
使用繼承不能很好的解決問題,鴨子的行為在子類不斷的改變并且讓所有的子類都有這些行為是不恰當?shù)?/span>
使用Flyable和Quackable接口解決了一部分問題,只有會飛的鴨子才會實現(xiàn)Flyable.但是Java接口不具有實現(xiàn)代碼,所有實現(xiàn)接口無法達到達到代碼的復用
設計原則
找出應用中可能需要變化之處,把他們獨立出來,不要和那些不需要變化的代碼混在一起
把變化的部分取出并封裝起來,以便以后可輕易的改動或擴充此部分而不影響不需要變化的的其他部分
分開變化和不會變化的部分
面向接口編程,而不是面向實現(xiàn)編程
飛行行為和咕咕叫行為已經(jīng)和鴨子類無關了
整合
最終版本
多用組合,少用繼承
S.O.L.I.D 面向對象設計五大基本原則
S-單一職責原則
一個類應該只有一項工作
如計算類只負責計算,而不負責展示,展示需要交由單獨的展示類進行處理
O-開放封閉原則
對擴展開放,對修改關閉
一個類無需修改類本身卻容易擴展
如計算類中的計算圖形面積方法大量的if/else,增加圖形要增加大量的if/else-改由圖形本身去計算
L-里氏替換原則
每一個子類或派生類應該可以替換它們基類或父類
I-接口隔離原則
不應強迫客戶端實現(xiàn)一個它用不上的接口,或是說客戶端不應該被迫依賴它們不使用的方法
D-依賴反轉原則
依靠抽象而不是具體實現(xiàn)。它表示高層次的模塊不應該依賴于低層次的模塊,它們都應該依賴于抽象
面向模式的軟件架構
架構模式
Layers/Pipes and Filters/Blackboard/Microkernel/BrokerMVC/PACReflection
Whole-Part/Master-Slave/Proxy/Command Processor/View Handler/Forwarder-Receiver/Client-Dispatcher-Server/publisher-subscriber/
Reactor/Proactor/Acceptor-Connector/Aysnchronous Completion Token/Active Object/Thread-Speific Storage
Loopup/Lazy Acquisition/Caching/Pooling/Resouce Lifecycle Manager/
設計模式
The 23 Gang of Four Design Patterns
Creational Patterns
Abstract Factory/Builder/Factory Method/Prototype/Singleton
Structural Patterns
Adapter/Bridge/Composite/Decorator/Facade/Flyweight/Proxy
Behavioral Patterns
Chain of Resp/Command/Interpreter/Iterator/Mediator/Memento/Observer/State/Strategy/Template/Visitor
成例
特定語言的,如引用計數(shù)(CounterPointer)
抽象、封裝、信息隱藏、模塊化、分離關注點、耦合與內聚、充分-完整-簡單、策略與實現(xiàn)分離、接口與實現(xiàn)分離、單個引用點、分而治之
landon:抽象(個人認為寫代碼最高境界就是抽象)、解耦、開閉
JDK源代碼淺析
經(jīng)典的集合框架
ref
《Head First Design Patterns》
《Pattern-Oriented Software Architecture》
posted on 2016-11-04 11:31
landon
閱讀(2454)
評論(0)
編輯
收藏
所屬分類:
ServerFramework
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發(fā)表評論。
網(wǎng)站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關文章:
一個入門rpc框架的學習
Java游戲服務器基礎技術體系
oop-模式-架構設計基礎(一)
《大型網(wǎng)站系統(tǒng)與Java中間件實踐》讀書筆記
Disruptor入門Ⅰ-Getting Started
Vertx VS Undertow Ⅰ
Copyright ©2025 landon Powered By
博客園
模板提供:
滬江博客
主站蜘蛛池模板:
亚洲无圣光一区二区
|
亚洲精品福利在线观看
|
www在线观看免费视频
|
免费高清小黄站在线观看
|
亚洲毛片网址在线观看中文字幕
|
亚洲人成色777777精品
|
四虎www成人影院免费观看
|
亚洲偷自拍另类图片二区
|
宅男666在线永久免费观看
|
亚洲国产区男人本色
|
免费成人高清在线视频
|
亚洲av无码一区二区乱子伦as
|
a级在线观看免费
|
亚洲av永久无码精品国产精品
|
免费成人在线视频观看
|
久久狠狠高潮亚洲精品
|
7723日本高清完整版免费
|
狠狠色伊人亚洲综合网站色
|
国产免费资源高清小视频在线观看
|
久久亚洲AV成人无码国产
|
91高清免费国产自产
|
亚洲国产美女精品久久久
|
中文字幕视频免费
|
国产成人精品亚洲日本在线
|
日韩免费电影在线观看
|
一级做a爱过程免费视
|
久热综合在线亚洲精品
|
免费无码黄十八禁网站在线观看
|
亚洲AV无码专区国产乱码不卡
|
在线日本高清免费不卡
|
亚洲精品无码不卡在线播放
|
亚洲成a人片在线观看老师
|
午夜精品免费在线观看
|
亚洲乱码日产精品一二三
|
亚洲一区二区高清
|
91黑丝国产线观看免费
|
黄色三级三级免费看
|
亚洲高清无在码在线电影不卡
|
日韩免费在线观看
|
日本免费久久久久久久网站
|
亚洲欧美日韩中文高清www777
|