Submit Search
Patterns in Library Design (套件設計裡的模式)
4 likes
1,084 views
AI-enhanced description
Jace Ju
文档讨论了设计图表套件的必要性和需求,强调了简化用户工作的重要性。提出了功能与实现分离的设计原则,以及使用适配器模式和策略模式来支持图表的多样化展示。最后指出设计模式的灵活性和不应强制应用于所有情况。
Technology
Read more
1 of 61
Download now
Downloaded 49 times
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
More Related Content
PDF
PHP 物件導向 - 基礎觀念篇
Jace Ju
PDF
jQuery 實戰經驗講座
Jace Ju
PDF
購物車程式架構簡介
Jace Ju
PDF
What happens in laravel 4 bootstraping
Jace Ju
PDF
wagon - 免安裝可攜的 Laravel 開發環境
Shengyou Fan
PDF
驗證與訊息
Shengyou Fan
PDF
CRUD 綜合運用
Shengyou Fan
PDF
Migrations 與 Schema 操作
Shengyou Fan
PHP 物件導向 - 基礎觀念篇
Jace Ju
jQuery 實戰經驗講座
Jace Ju
購物車程式架構簡介
Jace Ju
What happens in laravel 4 bootstraping
Jace Ju
wagon - 免安裝可攜的 Laravel 開發環境
Shengyou Fan
驗證與訊息
Shengyou Fan
CRUD 綜合運用
Shengyou Fan
Migrations 與 Schema 操作
Shengyou Fan
Viewers also liked
(14)
PDF
View 與 Blade 樣板引擎
Shengyou Fan
PDF
整合 Open ID
Shengyou Fan
PDF
Package 安裝與使用
Shengyou Fan
PDF
使用 Controller
Shengyou Fan
PDF
Eloquent ORM
Shengyou Fan
PDF
Route 路由控制
Shengyou Fan
PDF
啟動 Laravel 與環境設定
Shengyou Fan
PDF
工作坊簡介
Shengyou Fan
PDF
使用者認證
Shengyou Fan
PDF
Composer 套件管理
Shengyou Fan
PDF
PHP 語法基礎與物件導向
Shengyou Fan
PDF
開發環境建置
Shengyou Fan
PDF
Model 設定與 Seeding
Shengyou Fan
PDF
Composer 從入門到實戰
Shengyou Fan
View 與 Blade 樣板引擎
Shengyou Fan
整合 Open ID
Shengyou Fan
Package 安裝與使用
Shengyou Fan
使用 Controller
Shengyou Fan
Eloquent ORM
Shengyou Fan
Route 路由控制
Shengyou Fan
啟動 Laravel 與環境設定
Shengyou Fan
工作坊簡介
Shengyou Fan
使用者認證
Shengyou Fan
Composer 套件管理
Shengyou Fan
PHP 語法基礎與物件導向
Shengyou Fan
開發環境建置
Shengyou Fan
Model 設定與 Seeding
Shengyou Fan
Composer 從入門到實戰
Shengyou Fan
Ad
Similar to Patterns in Library Design (套件設計裡的模式)
(18)
PDF
Generative AI 在手機遊戲發行上的應用介紹.pdf
Walter Liu
PDF
【1110ROS社群開講】如何打造與人一起學習的機器檯燈_鄭凱文
MAKERPRO.cc
PDF
While software engineer meets 3d printer
Benux Wei
PPTX
Design Method_20200409
Winny Wang
PDF
Prototyping
泰鈞 方
PDF
Digital product design process
peiyuhuang5
PDF
设计师转型培训-工具篇
Robert Luo
PDF
Joomla! 網站規劃 簡報-i love joomla! 5月小聚
Asika Simon
PDF
Joomla! 網站規劃 簡報 - I love joomla! 5月小聚
ilovejoomla
ODP
就業經驗分享
景文 CIID
PDF
成大心理系-Prototyping方法
Souyi Yang
PPT
制作Ppt的7种武器
ultraji
PPTX
爱途迹
wuxianlehe
PDF
高雄和春資工系-Axure RP基礎課程
Souyi Yang
PDF
Doc 2011101404575913
Rhythm Sun
PDF
HPX台南讀書會-Axure RP基礎課程
Souyi Yang
PPTX
5irehands工作室 2
Forefeel Wu
KEY
请给我结果.S01 e01.小清新式的项目管理
lanlancamp
Generative AI 在手機遊戲發行上的應用介紹.pdf
Walter Liu
【1110ROS社群開講】如何打造與人一起學習的機器檯燈_鄭凱文
MAKERPRO.cc
While software engineer meets 3d printer
Benux Wei
Design Method_20200409
Winny Wang
Prototyping
泰鈞 方
Digital product design process
peiyuhuang5
设计师转型培训-工具篇
Robert Luo
Joomla! 網站規劃 簡報-i love joomla! 5月小聚
Asika Simon
Joomla! 網站規劃 簡報 - I love joomla! 5月小聚
ilovejoomla
就業經驗分享
景文 CIID
成大心理系-Prototyping方法
Souyi Yang
制作Ppt的7种武器
ultraji
爱途迹
wuxianlehe
高雄和春資工系-Axure RP基礎課程
Souyi Yang
Doc 2011101404575913
Rhythm Sun
HPX台南讀書會-Axure RP基礎課程
Souyi Yang
5irehands工作室 2
Forefeel Wu
请给我结果.S01 e01.小清新式的项目管理
lanlancamp
Ad
More from Jace Ju
(12)
PDF
Advanced php testing in action
Jace Ju
PDF
Beginning PHPUnit
Jace Ju
PDF
深入淺出 MVC
Jace Ju
PPTX
如何打造 WebMVC Framework - 基礎概念篇
Jace Ju
PDF
Refactoring with Patterns in PHP
Jace Ju
PDF
Patterns in Zend Framework
Jace Ju
PDF
Head First Zend Framework - Part 1 Project & Application
Jace Ju
PDF
常見設計模式介紹
Jace Ju
PDF
PHPUnit 入門介紹
Jace Ju
PDF
Web Refactoring
Jace Ju
PDF
CSS 排版 - 基礎觀念篇
Jace Ju
PDF
PHP 防駭 - 基礎觀念篇
Jace Ju
Advanced php testing in action
Jace Ju
Beginning PHPUnit
Jace Ju
深入淺出 MVC
Jace Ju
如何打造 WebMVC Framework - 基礎概念篇
Jace Ju
Refactoring with Patterns in PHP
Jace Ju
Patterns in Zend Framework
Jace Ju
Head First Zend Framework - Part 1 Project & Application
Jace Ju
常見設計模式介紹
Jace Ju
PHPUnit 入門介紹
Jace Ju
Web Refactoring
Jace Ju
CSS 排版 - 基礎觀念篇
Jace Ju
PHP 防駭 - 基礎觀念篇
Jace Ju
Patterns in Library Design (套件設計裡的模式)
1.
套件設計裡的模式 大澤木小鐵
2.
故事背景
3.
故事背景 客戶不滿意市面上的圖表套件…
4.
故事背景 客戶不滿意市面上的圖表套件… 所以出資希望我們做一套…
5.
故事背景 客戶不滿意市面上的圖表套件… 所以出資希望我們做一套… 本故事純屬虛構,台灣很少有這麼好的客戶。
6.
ChartX!
7.
ChartX! 本套件也是虛構,台灣很少人會花精力寫這種東西。
8.
需求
9.
需求 • 支援各類圖表,例如圓餅圖、長條圖。
10.
需求 • 支援各類圖表,例如圓餅圖、長條圖。 • 要易於使用,不必瞭解底層繪圖機制。
11.
需求 • 支援各類圖表,例如圓餅圖、長條圖。 • 要易於使用,不必瞭解底層繪圖機制。
這客戶非常有良心,沒有進一步的要求。 再次提醒,台灣很少有這麼好的客戶。
12.
設計前的討論
13.
設計前的討論 • 應該要簡化客戶的工作。
14.
設計前的討論 • 應該要簡化客戶的工作。 • 做好該做的事,也就是產生圖表。
15.
設計前的討論 • 應該要簡化客戶的工作。 • 做好該做的事,也就是產生圖表。 •
儘可能利用別人已經做好的底層繪圖機制。
16.
設計前的討論 •
應該要簡化客戶的工作。 • 做好該做的事,也就是產生圖表。 • 儘可能利用別人已經做好的底層繪圖機制。 • 儘量讓使用者知道的越少越好。
17.
設計前的討論 •
應該要簡化客戶的工作。 • 做好該做的事,也就是產生圖表。 • 儘可能利用別人已經做好的底層繪圖機制。 • 儘量讓使用者知道的越少越好。 • 讓使用者容易抽換圖表。
18.
設計前的討論 •
應該要簡化客戶的工作。 • 做好該做的事,也就是產生圖表。 • 儘可能利用別人已經做好的底層繪圖機制。 • 儘量讓使用者知道的越少越好。 • 讓使用者容易抽換圖表。 • 讓使用者容易擴充功能。
19.
設計前的討論 •
應該要簡化客戶的工作。 • 做好該做的事,也就是產生圖表。 • 儘可能利用別人已經做好的底層繪圖機制。 • 儘量讓使用者知道的越少越好。 • 讓使用者容易抽換圖表。 • 讓使用者容易擴充功能。 • 類別要可以分開開發。
20.
設計前的討論 •
應該要簡化客戶的工作。 • 做好該做的事,也就是產生圖表。 • 儘可能利用別人已經做好的底層繪圖機制。 • 儘量讓使用者知道的越少越好。 • 讓使用者容易抽換圖表。 • 讓使用者容易擴充功能。 • 類別要可以分開開發。 • 類別要易於測試。
21.
設計模式
22.
設計模式 • 一開始不用也沒關係,原則掌握住就好。
23.
設計模式 • 一開始不用也沒關係,原則掌握住就好。 • 不要去看模式的形,而是要懂模式的意。
24.
設計模式 • 一開始不用也沒關係,原則掌握住就好。 • 不要去看模式的形,而是要懂模式的意。 •
通常不會只出現一種模式。
25.
設計模式 • 一開始不用也沒關係,原則掌握住就好。 • 不要去看模式的形,而是要懂模式的意。 •
通常不會只出現一種模式。 進入設計階段!
26.
該如何設計套件架構?
27.
該如何設計套件架構? • 直接從功能與實作分離開始。
28.
該如何設計套件架構? • 直接從功能與實作分離開始。 • 功能:如何將使用者輸入的資料轉換成圖
表的概念。
29.
該如何設計套件架構? • 直接從功能與實作分離開始。 • 功能:如何將使用者輸入的資料轉換成圖
表的概念。 • 實作:真正繪製出圖表的底層繪圖引擎。
30.
該如何設計套件架構? • 直接從功能與實作分離開始。 • 功能:如何將使用者輸入的資料轉換成圖
表的概念。 • 實作:真正繪製出圖表的底層繪圖引擎。 抽象功能與底層實作分處於兩端…
31.
Bridge Pattern
34.
繪圖引擎怎麼做?
35.
繪圖引擎怎麼做? • 繪圖引擎已經定義好 API
,讓 Chart 使用。
36.
繪圖引擎怎麼做? • 繪圖引擎已經定義好 API
,讓 Chart 使用。 • 直接轉介別人已經寫好的繪圖 API (例如 GD 、 Image-Magick) 。
37.
繪圖引擎怎麼做? • 繪圖引擎已經定義好 API
,讓 Chart 使用。 • 直接轉介別人已經寫好的繪圖 API (例如 GD 、 Image-Magick) 。 借用第三方套件,轉換成我們的 API …
38.
Adapter Pattern
42.
如何建立圖表?
43.
如何建立圖表? • 用戶知道的越少越好。
44.
如何建立圖表? • 用戶知道的越少越好。 • 讓抽象類別生出子類別。
45.
如何建立圖表? • 用戶知道的越少越好。 • 讓抽象類別生出子類別。
封裝物件生成的過程…
46.
Simple Factory Pattern
48.
圖表格式
49.
圖表格式 • 呈現資料比例:圓餅圖、長條圖。
50.
圖表格式 • 呈現資料比例:圓餅圖、長條圖。 • 同樣的
API ,不同的呈現方式。
51.
圖表格式 • 呈現資料比例:圓餅圖、長條圖。 • 同樣的
API ,不同的呈現方式。 可以抽換圖表格式…
52.
Strategy Pattern
56.
還要注意什麼?
57.
還要注意什麼? • 這個例子並沒有涵蓋所有模式。
58.
還要注意什麼? • 這個例子並沒有涵蓋所有模式。 • 每種套件的設計不盡相同。
59.
還要注意什麼? • 這個例子並沒有涵蓋所有模式。 • 每種套件的設計不盡相同。 •
不要將模式強套上去。
60.
還要注意什麼? • 這個例子並沒有涵蓋所有模式。 • 每種套件的設計不盡相同。 •
不要將模式強套上去。 實作的事就交給你的同事吧~
61.
謝謝收看
Download