国产精品久久av_国产在线一区二区视频_欧美v亚洲v综合v国产v仙踪林_天天插天天色_亚洲精品久久久蜜桃_日韩一级网站_亚洲精品承认

南京軟件定制開發

南京傾心軟件歡迎您訪問本站

13605185909

新聞資訊

NEWS CENTER
欄目導航

簡述21種設計模式

發布時間:Mar 16, 2021         已有 人瀏覽
Object-C編程之道》個人感覺是非常好的一本iOS設計模式書籍。
里面會結合在iOS的Cocoa 框架中使用到的例子進行講解,在學習設計模式的同時,也能對Cocoa框架中使用的設計模式有個熟悉。這一點我非常喜歡。
 
按照設計模式的功能進行劃分,可以分為八類:
接口適配類,對象去耦類,對象創建類,抽象集合類,對象狀態類,行為擴展類,算法封裝類,性能與對象訪問類。其中包含內容如下:
對象創建型:1.原型模式;2.工廠模式;3.抽象工廠模式;4.單例模式;5.生成器
接口適配型:1.適配器模式;2.橋接模式;3.外觀模式
對象去耦型:1.中介者模式;2.觀察者模式
抽象集合型:1.組合模式;2.迭代器模式
行為擴展型:1.訪問者模式;2.裝飾器模式;3.責任鏈模式
算法封裝型:1.模版方法模式;2.策略模式;3.命令模式
性能與對象訪問型:1.享元模式;2.代理模式
對象狀態型:1.備忘錄模式
 
下面將對書中講解到的設計模式進行簡述。
建議有時間的同學去通讀和練習一遍。沒有時間的同學就看我下面寫的吧,先做到心里有個概況。等有時間了再去研究。
后面計劃對里面的每種設計模式進行詳解(二十一種,真不少),想持續關注的要留心了。
 
對象創建型
原型模式:
簡單的說就是復制,用同一個磨具復制出一系列的東西。
使用場景有:
1.創建一個實例流暢復雜,復制比較容易;
2.創建一個對象子對象組合比較多,復制比較容易;
應用實例:
自定義對象實現NSCopy協議或者NSMutableCopy協議,實現方法copyWithZone或者mutableCopyWithZone。就是對此設計模式的體現。
 
工廠模式:
簡單的說就是在一個類中根據需求,可以生產出多種類型的產品。
使用場景有:
類有很多具體的子類,想讓返回什么樣的子類局部化,由內部自行判斷。
應用實例:
NSNumber類定義了一系列的工廠方法:
根據int 生產 intNumber; 根據unsigned int 生產 unsignedNumber;
+ (NSNumber *)numberWithInt:(int)value;
+ (NSNumber *)numberWithUnsignedInt:(unsigned int)value;
 
抽象工廠模式:
從產品的角度看,是一種二維的思考。如水果工廠的工廠模式是生產蘋果,橘子。
而蘋果分為北方工廠產的蘋果,南方工廠產的蘋果。
從工廠的角度看,比較簡單。抽象工廠下面兩個子工廠,它們都可以生產蘋果,橘子。
應用實例:
NSNumber抽象工廠。下面很多具體的number工廠,如:
+ (NSNumber *)numberWithInt:(int)value;
+ (NSNumber *)numberWithUnsignedInt:(unsigned int)value;
 
單例模式:
一個類只有一個實例,并提供全局訪問點。
使用場景有:
系統只能共享,無法復制的元素。
應用實例:
文件系統管理類:整個系統只有一份。
UIApplication:一個App只有一個應用單例。
 
生成器模式:
將一個復雜對象的構建與它的表現分離,使得同樣的構建過程可以創建不一樣的表現對象。
使用場景:
構建過程需要用不同的組合構建不同表現的對象。
 
對于生成一個比較復雜的對象,通常使用生成器模式 里面按照角色劃分有4種:
客戶端,提出一系列需要,需要什么樣的產品。
指揮者,從客戶端那里接收到一系列需要,然后按照功能分割。
構建者,從指揮者手中得到一個需求,并生產一個對于的產品。
 
對象創建型整體宏觀圖如下:
 
接口適配型
適配器模式:
對象調用接口 -> 適配器 -> 被適配接口,適配器可以使原本不兼容的接口可以一起協調工作了。
使用場景:
已有類的接口與需求類接口不匹配。
應用實例:
Delegate是CocoaTouch框架中采用適配器模式(委托)的一種實現。實現協議的具體類是個適配器。
 
橋接模式:
把抽象層次結構從實現中分離出來,使其能夠獨立變更。
抽象層定義了供客戶端使用的上層抽象接口。
實現層次結構定義了供抽象層次使用的底層接口。
 
不想在抽象與其實現之間形成固定的綁定關系;
客戶端抽象層引用著實現層抽象層;
 
外觀模式:
為子系統中一組不同的功能接口,提供統一的外觀服務接口。
子系統變的越來越復雜,可以使用外觀類為這個子系統提供一個簡單的入口。
 
接口適配型整體宏觀圖如下: 
 
對象去耦型
中介者模式
一句看概述:封裝對象間的交互。
中介者模式用于定義一個集中的場所,對象間的交互可以在一個中介者對象內處理, 從而避免其他對象間的依存關系。
使用場景:
對象間的交互定義明確而復雜,導致一組對象彼此互相依賴且難以理解。
使用實例:
組件化開發中使用的路由器,就是一個利用反射機制實現的中介者。
 
觀察者模式
定義一種一對多的關系,使一個對象狀態改變,所以觀察者對象都收到通知。
觀察者模式也叫發布-訂閱機制。
可以利用Observer模式,令通知中心為中介,可以做到一個自定義對象通過通知中心 去通知到其他多個對象的目的。
使用場景:
在MVC框架模式中,通過觀察著,實現Model,View的聯動。
 
對象去耦型整體宏觀圖如下: 
 
抽象集合型
組合模式
組合模式讓我們把相同基類型的對象組合到樹狀結構中,其中父節點包含同類型的子節點。
組件節點和葉子節點都是實現同一個基類接口。同一個抽象父類。
對組合對象的查詢,訪問都是遞歸操作。
將對象組合成樹形結構,以表示“整體-部分”的層次結構,組合使得用戶對單個對象和組合對象的操作具有一致性。
使用實例:
UIView的樹形結構,包含很多子View。
事件消息鏈,響應鏈傳遞。
 
迭代器模式
迭代器提供了一種 順序訪問聚合對象(集合)中元素的方法,而無需暴露結構的底層表示和結構細節。 遍歷集合元素的任務從集合 轉移給了迭代器對象。
使用場景:
需要訪問組合對象內容,而不想暴露內部表示,結構。
迭代器分為內部迭代器和外部迭代器。
外部迭代器允許客戶端更自由的使用,同時需要熟悉組合對象的內部結構。
內部迭代器被封裝在集合內部,在集合外部提供接口。
使用實例:
集合對象(nsarray, nsdictionary)都默認提供了迭代器。
 
抽象集合型整體宏觀圖如下: 
 
行為擴展型
訪問者模式
作用于組合對象結構中的每一個元素的操作,它讓我們在不改變元素類的前提下,擴展這些類的新操作。
在接受訪問者的接口方法中,實現將元素傳給訪問者,然后訪問者擴展對元素的操作。
使用場景:
想對一個對象進行很多不相關的操作,又不想污染這個對象。
 
裝飾器模式
向對象添加行為而不破壞其原有的風格,因此增強了的對象是同一個類的加強版。任何“增強”均可以動態添加和刪除。裝飾對象可以附加到另一裝飾對象,也可以附加到原始對象。
使用場景:
在不影響對象的情況下,動態,透明的給單個對象添加職責。
使用實例:
濾鏡操作,可以不管濾鏡順序。
 
責任鏈模式
讓一組對象處理特定的請求,而對這個組中的成員(處理程序對象handler)增加,刪除不影響組的完整性。
 鏈中的每一個對象實現了同樣的方法,處理對鏈中第一個對象發起的同一個請求。 如果一個對象不知道如何處理這個請求,就把請求傳給下一個響應器(successor)。
使用場景:
向一組對象發送處理請求,而不想顯示的指定是哪個對象進行處理。
 
行為擴展型整體宏觀圖如下: 
 
算法封裝型
模版方法模式
在抽象父類中定義操作架構和公共操作,具體操作延遲到子類中實現。
在模版方法模式中,使子類可以重定義算法的某些特定步驟而不改變算法結構。
使用場景:
需要一次性將不變部分寫好,將可變部分留給子類實現。
使用實例:
在UIView 中的方法draw:(CGRect)rect方法。
這個繪圖方法draw:為UIView提供的鉤子函數,當用戶想要自己繪圖時,就可以自己擴展添加。不實現也不影響功能。
 
策略模式
在面向對象設計中,將不同的算法分離成不同的類,稱為策略。與這種做法相關的設計模式,稱為策略模式。
使用場景:
在平時的函數中會出現if-else或者switch-case這樣的選擇語句,它們的不同分支下對應的是不同的算法。 而將這些不同的算法封裝成一個個不同的算法對象。實際上就是不同的策略。
使用實例:
控制器是視圖的策略類,視圖可以因為控制器不同而展示不同的信息。
 
命令模式
在面向對象設計中,把指令封裝在各種命令對象中,命令對象可以被傳遞, 并且在指定時刻被不同客戶的復用,從這一概念精心設計的模式被稱為命令模式。
使用場景:
想讓程序支持撤銷恢復功能
使用實例:
NSInvocation, NSUndoManager是框架中這個模式的典型應用。
 
算法封裝型整體宏觀圖如下: 
 
性能與對象訪問型
享元模式
運用共享技術,有效的控制大量細粒度的對象。
使用場景:
應用程序中使用大量對象時。
通過共享減少了多少對象總數。
使用實例:
屏幕上要展示1000朵小花,利用共享可以只用10個imageData對象,1000個坐標對象。
 
代理模式
為其他客戶端提供一種代理,來控制對真實對象的訪問。
遠程代理:用本地對象代替遠程對象。如:發送網絡時的代理服務器。
虛擬代理:將代理直接面向客戶端,使客戶端認為操作的虛擬代理就是真實對象。虛擬代理提供占位對象和重型對象。默認使用占位對象,當需要使用重型對象時才加載。
 
使用實例:
Object-C不支持多繼承,如果代理對象不是NSObject的子類的話,可以考慮用NSProxy來作為占位或者替代對象。
盡管NSProxy也是NSObject類型,但是NSProxy的作用就是當代理。
 
性能與對象訪問型整體宏觀圖如下: 

 

對象狀態型
備忘錄模式
在不破壞原有封裝的前提下,捕獲一個對象的內部狀態,并在該對象之外保存狀態。 這樣,之后可將對象恢復到之前的狀態。將狀態封裝成對象保存。
使用場景:
需要保存對象在某一時刻的狀態(或部分狀態),這樣以后就可以恢復到先前的狀態。
使用實例:
Cocoa Touch框架在歸檔,屬性列表序列化,核心數據中采用了備忘錄模式。
 
對象狀態型整體宏觀圖如下: 
Copyright © 2020-2022 南京傾心軟件技術有限公司 版權所有     蘇ICP備2020070309號-1
QQ在線咨詢
13605185909
返回頂部
国产精品久久av_国产在线一区二区视频_欧美v亚洲v综合v国产v仙踪林_天天插天天色_亚洲精品久久久蜜桃_日韩一级网站_亚洲精品承认
中文字幕一区二区三中文字幕| 精品在线视频一区| 激情综合五月天| 欧美亚洲日本一区| 欧美精品一区二区三区蜜臀| 夜夜操天天操亚洲| 成人av在线资源网站| 日韩午夜在线观看视频| 一区二区国产视频| 97se亚洲国产综合自在线不卡| 精品国产污污免费网站入口 | av男人天堂一区| 精品999久久久| 五月天丁香久久| 欧美性xxxxx极品少妇| 中文字幕一区不卡| 成人av资源网站| 国产精品伦理一区二区| 国产精品中文有码| 久久久久久久久久久久久女国产乱| 婷婷丁香久久五月婷婷| 在线观看亚洲a| 亚洲国产另类av| 欧美在线影院一区二区| 亚洲精品高清在线| 欧美在线一区二区三区| 亚洲丶国产丶欧美一区二区三区| 91丨九色porny丨蝌蚪| 综合久久久久久久| 色欧美乱欧美15图片| 亚洲视频在线观看三级| aa级大片欧美| 亚洲精品第1页| 欧美美女黄视频| 日产欧产美韩系列久久99| 678五月天丁香亚洲综合网| 一区二区免费在线播放| 欧美久久久久久久久| 美女www一区二区| 日韩欧美123| 福利一区二区在线| 中文字幕一区av| 欧美日韩一区三区| 青青草视频一区| 久久久一区二区三区| 成人av影视在线观看| 综合色天天鬼久久鬼色| 欧美性猛交xxxxxx富婆| 麻豆精品视频在线观看视频| 久久久久国产精品麻豆ai换脸| 丁香激情综合五月| 亚洲国产精品嫩草影院| 欧美一区二区三区在| 国产乱淫av一区二区三区| 国产精品女主播av| 欧美日韩在线三区| 国产美女精品人人做人人爽| 1000精品久久久久久久久| 欧美日本一区二区| 国产成人av一区二区| 亚洲国产色一区| 国产人成一区二区三区影院| 在线亚洲欧美专区二区| 精品综合久久久久久8888| 亚洲男同性视频| 日韩精品影音先锋| 一本到高清视频免费精品| 久久国产麻豆精品| 亚洲国产综合视频在线观看| 欧美精品一区二区三区一线天视频| 93久久精品日日躁夜夜躁欧美| 蜜臀av亚洲一区中文字幕| 中文字幕一区二区三区不卡| 日韩精品资源二区在线| 色欧美片视频在线观看在线视频| 国产一本一道久久香蕉| 亚洲国产人成综合网站| 自拍偷拍国产精品| 精品99久久久久久| 91精品国产综合久久精品麻豆| 99久久精品情趣| 国产精品99久久久久久似苏梦涵| 亚洲福利国产精品| 亚洲欧美日韩在线不卡| 国产欧美综合色| 精品国产一二三区| 欧美精品v日韩精品v韩国精品v| www.一区二区| 国产激情精品久久久第一区二区| 蜜臀av性久久久久av蜜臀妖精 | 91成人网在线| 91麻豆精品秘密| 成人福利视频在线| 风间由美一区二区av101| 久久精品av麻豆的观看方式| 天天影视色香欲综合网老头| 一区二区三区四区不卡在线| 国产精品网曝门| 欧美激情一区二区三区全黄 | 亚洲欧洲韩国日本视频| 国产欧美一区二区精品秋霞影院| 欧美成人女星排名| 日韩欧美一级二级三级| 日韩欧美一级片| 精品少妇一区二区三区视频免付费 | 日韩视频一区二区在线观看| 欧美精品在线视频| 欧美美女黄视频| 91精品国产乱码| 日韩三级视频在线看| 日韩欧美资源站| 精品99999| 国产精品区一区二区三区| 国产三级精品三级| 国产精品女主播av| 亚洲色图制服丝袜| 亚洲成人一区在线| 人人精品人人爱| 国产一区视频在线看| 国产99久久久国产精品| 成人网页在线观看| 91看片淫黄大片一级在线观看| 色综合视频一区二区三区高清| 日本高清不卡aⅴ免费网站| 欧美日韩国产一二三| 欧美高清精品3d| 久久综合成人精品亚洲另类欧美 | 国产一本一道久久香蕉| 成人深夜福利app| 91色综合久久久久婷婷| 在线不卡中文字幕播放| 日韩一区二区在线观看| 国产欧美精品一区| 亚洲一区二区在线免费观看视频| 天天影视涩香欲综合网 | 日韩二区三区在线观看| 国产馆精品极品| 欧美性大战久久久| 久久久久久久综合色一本| 亚洲精品视频在线看| 日本特黄久久久高潮| av不卡在线观看| 制服丝袜亚洲精品中文字幕| 欧美激情艳妇裸体舞| 亚洲成人自拍网| 国产精品性做久久久久久| 欧美唯美清纯偷拍| 国产欧美日韩在线看| 亚洲一区二区在线播放相泽| 国产综合一区二区| 欧美视频日韩视频在线观看| 久久精品一二三| 五月婷婷综合激情| 91丨九色丨国产丨porny| 欧美大片顶级少妇| 一二三四社区欧美黄| 国产麻豆精品在线| 欧美日韩国产一区| 国产精品女主播在线观看| 久久99国产精品尤物| 色婷婷久久久亚洲一区二区三区 | 国产精品乱码人人做人人爱| 蜜桃视频一区二区| 日本伦理一区二区| 国产欧美日韩在线视频| 免费观看在线综合色| 在线观看免费亚洲| 国产精品国产三级国产三级人妇| 久久成人免费网| 欧美日韩久久一区| 亚洲女性喷水在线观看一区| 成人午夜av电影| 久久美女艺术照精彩视频福利播放| 亚洲国产精品久久一线不卡| 91麻豆文化传媒在线观看| 国产日产欧美精品一区二区三区| 另类小说综合欧美亚洲| 欧美日韩五月天| 亚洲午夜私人影院| 一本久久a久久精品亚洲| 中文字幕一区在线| 成人av电影观看| 国产精品午夜免费| 国产69精品久久久久777| 久久亚洲春色中文字幕久久久| 捆绑变态av一区二区三区| 欧美日韩电影在线播放| 亚洲国产精品一区二区久久| 91久久线看在观草草青青| 亚洲三级在线看| 91免费在线播放| 1区2区3区精品视频| 色哟哟日韩精品| 亚洲第一精品在线| 欧美揉bbbbb揉bbbbb| 日韩精品国产欧美| 日韩丝袜美女视频| 国产黄色精品视频| 成人免费视频在线观看| 欧美性做爰猛烈叫床潮|