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