軟件模式課程設(shè)計(jì)_第1頁(yè)
軟件模式課程設(shè)計(jì)_第2頁(yè)
軟件模式課程設(shè)計(jì)_第3頁(yè)
軟件模式課程設(shè)計(jì)_第4頁(yè)
軟件模式課程設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩12頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、 軟件設(shè)計(jì)模式 課程設(shè)計(jì) 課程名稱: 軟件設(shè)計(jì)模式 院 系: 計(jì)算機(jī)科學(xué)與工程學(xué)院 學(xué)生姓名: 學(xué) 號(hào): 組 員: 專業(yè)班級(jí): 軟件 122 指導(dǎo)教師: 王竹榮老師 2015 年 秋季 學(xué)期 目 錄一、 系統(tǒng)目標(biāo).1 設(shè)計(jì)目的.1 需求描述.1二、 系統(tǒng)模式選擇.1 策略模式.1 單例模式.3 外觀模式.4 代理模式.5三、 個(gè)人完成的工作設(shè)計(jì).9四、實(shí)驗(yàn)結(jié)果.10五、心得體會(huì).11六、 參考文獻(xiàn).121、 系統(tǒng)目標(biāo)1. 設(shè)計(jì)目的設(shè)計(jì)模式的提出,是面向?qū)ο蟪绦蛟O(shè)計(jì)演化過(guò)程中一個(gè)重要的里程碑,設(shè)計(jì)模式使得人們可以更加簡(jiǎn)單和方便地去復(fù)用成功的軟件設(shè)計(jì)和體系結(jié)構(gòu),從而能夠幫助設(shè)計(jì)者更快更好地完成系統(tǒng)

2、設(shè)計(jì)。希望通過(guò)本次課程設(shè)計(jì),可以更加了解設(shè)計(jì)模式的概念、設(shè)計(jì)模式的基本要素、設(shè)計(jì)模式的原則和設(shè)計(jì)模式的類型,以及各種設(shè)計(jì)模式的特點(diǎn)和適用情形,會(huì)根據(jù)不同的場(chǎng)景去靈活運(yùn)用各種模式,加深對(duì)軟件設(shè)計(jì)課程的理解。通過(guò)運(yùn)用設(shè)計(jì)模式來(lái)解決實(shí)際系統(tǒng)中遇到的問(wèn)題,鞏固所學(xué)的理論知識(shí),提高程序設(shè)計(jì)能力,從而具備利用計(jì)算機(jī)編程分析解決綜合性實(shí)際問(wèn)題的初步能力。2. 需求描述該系統(tǒng)是一個(gè)畫(huà)板程序,我們用設(shè)計(jì)模式的思想來(lái)設(shè)計(jì)系統(tǒng)結(jié)構(gòu),然后實(shí)現(xiàn)基本圖形的繪制功能。系統(tǒng)中總共用到以下設(shè)計(jì)模式,分別是代理模式,單例模式,外觀模式,策略模式。2.1設(shè)計(jì)模式要求該模式應(yīng)用到4種模式,其中涉及到的模式有單例模式、代理模式、策略模

3、式、外觀模式。2.2畫(huà)圖基本要求可以實(shí)現(xiàn)畫(huà)任意的曲線、圖形的基本功能。2.3畫(huà)圖的高級(jí)要求二系統(tǒng)模式選擇(1)策略模式策略模式,又叫算法簇模式,就是定義了不同的算法簇,并且可以之間互相替換,此模式讓算法的變化獨(dú)立于使用算法的客戶。設(shè)計(jì)原則是把一個(gè)類中經(jīng)常改變或者將來(lái)可能改變的部分提取出來(lái),作為一個(gè)接口,然后在類中包含這個(gè)對(duì)象的實(shí)例,這樣類的實(shí)例在運(yùn)行時(shí)就可以隨意調(diào)用實(shí)現(xiàn)了這個(gè)接口的類的行為。策略模式屬于対象行為型模式,主要針對(duì)一組算法,將每一個(gè)算法封裝到具有共同接口的獨(dú)立的類中,從而使得他們可以相互替換。策略模式可以使得算法可以在不影響到客戶端的情況下發(fā)生變化。策略模式適用于當(dāng)一個(gè)應(yīng)用程序需要

4、實(shí)現(xiàn)一種特定的服務(wù)或者功能,而且該程序有多種實(shí)現(xiàn)方式時(shí)使用。具體代碼實(shí)現(xiàn)如下: -(void)createToolView:(NSArray *)titleArray CGFloat buttonWidth = (self.bounds.size.width - (titleArray.count + 1) * KtoolButtonSpace) / titleArray.count; for (NSInteger i = 0; i < titleArray.count; i +) ToolButton *button = ToolButton alloc initWithFrame:C

5、GRectMake(i * (buttonWidth + KtoolButtonSpace) + KtoolButtonSpace, 0, buttonWidth, self.bounds.size.height); button setTitle:titleArrayi forState:UIControlStateNormal; button setTag:i; button addTarget:self action:selector(toolButtonClick:) forControlEvents:UIControlEventTouchDown; self addSubview:b

6、utton; -(void)toolButtonClick:(ToolButton *)sender self.recordButton setSelected:NO; sender setSelected:YES; self.recordButton = sender; switch (sender.tag) case 0: self hideOtherSelectedView:self.colorView; self createSelectedColorView; break; case 1: self hideOtherSelectedView:self.widthView; self

7、 createSelectedWidthView; break; case 2: self hideOtherSelectedView:self.eraserView; self createSelectedEraserView; break; case 3: self hideOtherSelectedView:nil; _cancelBlock(); break; case 4: self hideOtherSelectedView:nil; _deleteAllBlock(); break; case 5: self hideOtherSelectedView:nil; _photoBl

8、ock(); break; case 6: self hideOtherSelectedView:nil; _saveBlock(); break; default: break; (2)單例模式單例模式是一種常用的軟件設(shè)計(jì)模式。在他的核心結(jié)構(gòu)中只包含一個(gè)被稱為單例的特殊類。通過(guò)單例模式可以保證系統(tǒng)中一個(gè)類只有一個(gè)實(shí)例而且該實(shí)例易與外界訪問(wèn),從而便對(duì)實(shí)例個(gè)數(shù)的控制并節(jié)約系統(tǒng)資源。單例模式的目的是使得類的一個(gè)對(duì)象成為系統(tǒng)中的唯一實(shí)例。要實(shí)現(xiàn)這一點(diǎn),可以從客戶端對(duì)其進(jìn)行實(shí)例化開(kāi)始。因此需要用一種只允許生成對(duì)象類的唯一實(shí)例的機(jī)制,“阻止”所有想要生成對(duì)象的訪問(wèn)。使用工廠方法來(lái)限制實(shí)例化過(guò)程。這個(gè)方法

9、應(yīng)該是靜態(tài)方法(類方法),因?yàn)樽岊惖膶?shí)例去生成另一個(gè)唯一實(shí)例毫無(wú)意義。具體代碼實(shí)現(xiàn)如下: typedef void(SelectedColorViewBlock)(UIColor * color);#pragma mark - 單例模式 +(SelectedColorView *)shareViewWithFrame:(CGRect)frame andBlock:(SelectedColorViewBlock)colorblock synchronized(shareInstance) static dispatch_once_t onceView; dispatch_once(&on

10、ceView, shareInstance = SelectedColorView alloc initWithFrame:frame andSelectedColorViewBlock:colorblock; ); return shareInstance;+(instancetype)allocWithZone:(struct _NSZone *)zone synchronized(shareInstance) static dispatch_once_t onceView; dispatch_once(&onceView, shareInstance = super allocW

11、ithZone:zone; ); return shareInstance;(3)外觀模式外觀模式(Facade),為子系統(tǒng)中的一組接口提供一個(gè)一致的界面,定義一個(gè)高層接口,這個(gè)接口使得這一子系統(tǒng)更加容易使用。適用場(chǎng)景 。在以下情況下使用外觀模式:1.設(shè)計(jì)初期階段,應(yīng)該有意識(shí)的將不同階層分離,層與層之間建立外觀模式。2.開(kāi)發(fā)階段子系統(tǒng)越來(lái)越復(fù)雜,增加外觀模式提供一個(gè)簡(jiǎn)單的調(diào)用接口。 3.維護(hù)一個(gè)大型遺留系統(tǒng)的時(shí)候,可能這個(gè)系統(tǒng)難以維護(hù)和擴(kuò)展,但又包含非常重要的功能,為其開(kāi)發(fā)一個(gè)外觀類,以便新系統(tǒng)與其交互。使用外觀模式實(shí)現(xiàn)了子系統(tǒng)與客戶端之間的松耦合關(guān)系,客戶端屏蔽了子系統(tǒng)組件,減少了客戶端所需

12、處理的對(duì)象數(shù)目,使得子系統(tǒng)使用起來(lái)更加容易。(4)代理模式代理模式為其他對(duì)象提供一種代理以控制對(duì)這個(gè)對(duì)象的訪問(wèn)。在某些情況下,一個(gè)對(duì)象不適合或者不能直接引用另一個(gè)對(duì)象,而代理對(duì)象可以在客戶端和目標(biāo)對(duì)象之間起到中介的作用。抽象角色:通過(guò)接口或抽象類聲明真實(shí)角色實(shí)現(xiàn)的業(yè)務(wù)方法。代理角色:實(shí)現(xiàn)抽象角色,是真實(shí)角色的代理,通過(guò)真實(shí)角色的業(yè)務(wù)邏輯方法來(lái)實(shí)現(xiàn)抽象方法,并可以附加自己的操作。真實(shí)角色:實(shí)現(xiàn)抽象角色,定義真實(shí)角色所要實(shí)現(xiàn)的業(yè)務(wù)邏輯,供代理角色調(diào)用。具體代碼實(shí)現(xiàn)如下:typedef void(SelectedColorViewBlock)(UIColor * color);-(instancet

13、ype)initWithFrame:(CGRect)frame andSelectedColorViewBlock:(SelectedColorViewBlock)colorViewBlock if (self = super initWithFrame:frame) _colorBlock = colorViewBlock; self setBackgroundColor:UIColor yellowColor; self createToolItem; return self;typedef void(SelectedEraserViewBlock)(NSInteger width);-(

14、instancetype)initWithFrame:(CGRect)frame andSelectedEraserViewBlock:(SelectedEraserViewBlock)eraserBlock if (self = super initWithFrame:frame) _eraserBlock = eraserBlock; self setBackgroundColor:UIColor purpleColor; self createToolItemWithArray; return self;typedef void(SelectedWidthViewBlock)(NSInt

15、eger width);-(instancetype)initWithFrame:(CGRect)frame andSelectedWidthViewBlock:(SelectedWidthViewBlock)widthBlock if (self = super initWithFrame:frame) _widthBlock = widthBlock; self setBackgroundColor:UIColor orangeColor; NSArray *itemArray = 1,2,3,4,5,6,10,15,20,25; self createToolItemWithArray:

16、itemArray; return self;ToolView()<UIImagePickerControllerDelegate,UINavigationControllerDelegate,UITableViewDataSource,UITableViewDelegate> SelectedColorViewBlock _colorBlock; SelectedWidthViewBlock _widthBlock; SelectedEraserViewBlock _eraserBlock; ToolViewBlock _cancelBlock; ToolViewBlock _d

17、eleteAllBlock; ToolViewBlock _photoBlock; ToolViewBlock _saveBlock;-(instancetype)initWithFrame:(CGRect)frame andSelectedColorViewBlock:(SelectedColorViewBlock)colorViewBlock andSelectedWidthViewBlock:(SelectedWidthViewBlock)widthBlock andSelectedEraserViewBlock:(SelectedEraserViewBlock)eraserBlock

18、andToolViewCancelBlock:(ToolViewBlock)cancelBlock andToolViewDeleteAllBlock:(ToolViewBlock)deleteAllBlock andPhotoBlock:(ToolViewBlock)photoBlock andSaveBlock:(ToolViewBlock)saveBlock if (self = super initWithFrame:frame) _cancelBlock = cancelBlock; _deleteAllBlock = deleteAllBlock; _photoBlock =pho

19、toBlock; _saveBlock = saveBlock; _colorBlock = colorViewBlock; _eraserBlock = eraserBlock; _widthBlock = widthBlock; self setBackgroundColor:UIColor lightGrayColor; NSArray *titleArray = "顏色","線寬","橡皮","撤銷","清屏","相機(jī)","保存" self cre

20、ateToolView:titleArray; return self;-(void)toolButtonClick:(ToolButton *)sender self.recordButton setSelected:NO; sender setSelected:YES; self.recordButton = sender; switch (sender.tag) case 0: self hideOtherSelectedView:self.colorView; self createSelectedColorView; break; case 1: self hideOtherSele

21、ctedView:self.widthView; self createSelectedWidthView; break; case 2: self hideOtherSelectedView:self.eraserView; self createSelectedEraserView; break; case 3: self hideOtherSelectedView:nil; _cancelBlock(); break; case 4: self hideOtherSelectedView:nil; _deleteAllBlock(); break; case 5: self hideOtherSelectedView:nil; _photoBlock(); break; case 6: self hideOtherSelectedView:nil; _saveBlock(); break; default: break; 3 個(gè)人完成的工作設(shè)計(jì)外觀模式(Facade),為子系統(tǒng)中的一組接口提供一個(gè)一致的界面,定義一個(gè)高層接口,這個(gè)接口使得這一子系統(tǒng)更加容易使用。策略模式,設(shè)計(jì)原則是把一個(gè)類中經(jīng)常改變或者將來(lái)可能改變的部分提取出來(lái),作為一個(gè)接口,然后在類中包含這個(gè)對(duì)象的實(shí)例,這樣類的實(shí)例在運(yùn)行時(shí)就可以隨意調(diào)用實(shí)現(xiàn)了這個(gè)接

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論