解決的問(wèn)題 解決演示文稿導(dǎo)出各種格式的問(wèn)題。假設(shè)你有一個(gè)演示文稿(Presentation),演示文稿里包含多張幻燈片(Slide),需要實(shí)現(xiàn)將演示文稿導(dǎo)出為PDF、視頻等文...
解決的問(wèn)題 解決演示文稿導(dǎo)出各種格式的問(wèn)題。假設(shè)你有一個(gè)演示文稿(Presentation),演示文稿里包含多張幻燈片(Slide),需要實(shí)現(xiàn)將演示文稿導(dǎo)出為PDF、視頻等文...
解決的問(wèn)題 假設(shè)你要開(kāi)發(fā)一個(gè)app,app的界面支持MaterialDesign和Ant兩種主題。不同的主題所用的組件是不一樣的,例如按鈕組件,MaterialDesign主...
解決的問(wèn)題 當(dāng)你需要在代碼的每個(gè)地方,都能訪(fǎng)問(wèn)到同一個(gè)實(shí)例時(shí),就可以用Singleton Pattern(單例模式)了。這是最簡(jiǎn)單的設(shè)計(jì)模式了。每種語(yǔ)言實(shí)現(xiàn)單例的方式可能會(huì)不...
解決的問(wèn)題 以電腦的文件管理app為例,文件夾里有各種類(lèi)型的文件(文本、圖片、視頻等),鼠標(biāo)右鍵點(diǎn)擊文件后,后彈出一個(gè)菜單(ContextMenu),菜單顯示可以對(duì)文件的操作...
解決的問(wèn)題 開(kāi)發(fā)一個(gè)電子書(shū)app,可以這樣設(shè)計(jì): 每個(gè)電子書(shū)實(shí)例化后,都要占用一些計(jì)算機(jī)資源(CPU、內(nèi)存等),那么當(dāng)電子書(shū)多了后,就會(huì)有性能問(wèn)題。這樣情況,可以使用Prox...
解決的問(wèn)題 開(kāi)發(fā)一個(gè)電視機(jī)遙控器app,要求可以適配各種的電視機(jī)品牌(Sony、Samsung等)。遙控器分為基礎(chǔ)版和高級(jí)版,基礎(chǔ)版只能開(kāi)關(guān)機(jī),高級(jí)版可以切換頻道??梢赃@樣設(shè)...
解決的問(wèn)題 當(dāng)創(chuàng)建了大量對(duì)象,可能會(huì)因?yàn)槭褂脙?nèi)存過(guò)多而導(dǎo)致性能問(wèn)題,可以考慮使用 Flyweight Pattern(輕量級(jí)模式)。例如,開(kāi)發(fā)一個(gè)地圖軟件,地圖上面需要標(biāo)注 ...
解決的問(wèn)題 為一個(gè)類(lèi)添加更多功能。簡(jiǎn)單的情形可以使用繼承。有些復(fù)雜的情況使用繼承就比較麻煩了。例如要開(kāi)發(fā)一個(gè)保存數(shù)據(jù)到云端的功能(CloudStream),有些數(shù)據(jù)可以要先加...
解決的問(wèn)題 開(kāi)發(fā)了一個(gè)給照片添加濾鏡的功能。假設(shè)需要使用第三方的濾鏡,但是第三方的濾鏡的接口和自己的濾鏡不兼容,那么就可以使用適配器模式將第三方的濾鏡轉(zhuǎn)換為自己可以用的濾鏡。...
解決的問(wèn)題 將對(duì)象組合成層級(jí)結(jié)構(gòu),支持一起修改。例如文件結(jié)構(gòu):Root Folder下有兩個(gè)文件夾:Videos Folder和Images Folder,Videos Fo...
解決的問(wèn)題 Visitor Pattern是為了在不改變類(lèi)本身的代碼的前提下,給類(lèi)添加新的特性。 例如,HTML有各種類(lèi)型的節(jié)點(diǎn)(HtmlNode),例如HeadingNod...
解決的問(wèn)題 開(kāi)發(fā)一個(gè)WebServer,處理Request,處理過(guò)程包括Authenticate、Compress和Log步驟。要求可以自由添加或者移除步驟。 代碼 Hand...
解決的問(wèn)題 所有做過(guò)前端的人都應(yīng)該使用過(guò)該模式。你要開(kāi)發(fā)一個(gè)界面,界面由選項(xiàng)列表(OptionList),文本框(TextBox)和按鈕(Button)組成。在選項(xiàng)列表完成選...
解決的問(wèn)題 一個(gè)Excel表格,你修改一個(gè)地方的數(shù)值(DataSource),相關(guān)的圖表(Chart)和另一個(gè)表格(SpreadSheet)也會(huì)同步發(fā)生變化。 代碼 Obse...
解決的問(wèn)題 開(kāi)發(fā)一個(gè)按鈕組件,不同的按鈕點(diǎn)擊執(zhí)行不同的命令。 代碼 Command: Button: DocumentService: DeleteDocumentComma...
解決的問(wèn)題 開(kāi)發(fā)一個(gè)銀行軟件,有付款、轉(zhuǎn)賬等任務(wù),要求在執(zhí)行任務(wù)前,需要先記錄日志。 代碼 Logger: Task: PayTask: TransferTask: Test...
解決的問(wèn)題 開(kāi)發(fā)一個(gè)保存圖片的功能,保存圖片前,需要先對(duì)圖片進(jìn)行壓縮、添加濾鏡等處理。 代碼 Compressor: JpegCompressor: PngCompresso...
解決的問(wèn)題 瀏覽器的瀏覽記錄,需要遍歷瀏覽記錄,但是又不想暴露保存瀏覽結(jié)構(gòu)的數(shù)據(jù)結(jié)構(gòu);本質(zhì)上也是數(shù)據(jù)的封裝。 代碼 BrowserHistory: Iterator: Lis...