SlideShare une entreprise Scribd logo
1  sur  78
Teddy Chen
July. 20 2013
http://www.teddysoft.tw/
http://teddy-chen-tw.blogspot.tw/
Design Patterns這樣學就會了
入門實作班, Day 1
我是誰
• 2012年7月成立泰迪軟體,從事敏捷開發顧問、教
育訓練、軟體工具導入等服務。
• 2012年6月,出版暢銷書「笑談軟體工程:敏捷方
法的逆襲」。
• 2012年4月起,多次講授Scrum課程,與學員互動氣
氛佳,滿意度高。
• 超過17年design pattern實務經驗,曾在pattern領域
最著名的PLoP國際研討會發表論文。
– PLoP 2004:A Pattern Language for Personal Authoring
in E-Learning.
– Asia PLoP 2011:Emerging Patterns of Continuous
Integration for Cross-Platform Software Development.
• 2009年取得Certified ScrumMaster。
• 2008年4月起迄今,超過4年Scrum實際導入經驗。
• 2008年取得台北科技大學資工博士。
• 2007年起經營「搞笑談軟工」部落格。
Copyright@2013 Teddysoft
Copyright@2013 Teddysoft
Agenda--Day 1
• 認識軟體設計的真正產出物
• 模式的內涵:練習動手寫出一個模式
• 12個物件導向設計觀念與原則
• 設計模式密碼:3 3 23
• GoF設計模式實戰
– Singleton
– Observer
• 快速回顧
Copyright@2013 Teddysoft
Agenda--Day 2
• State
• Facade
• Template Method
• Factory Method
• Abstract Factory
• 快速回顧
Copyright@2013 Teddysoft
Agenda--Day 3
• Strategy
• Command
• Adapter
• Composite
• 快速回顧
Copyright@2013 Teddysoft
認識軟體設計的真正產出物
軟體開發團隊常見的狀況
• Data Structure + Algorithm = Program
– 最高指導原則:反正程式可以動就好了
• 問題
– 分工但不易合作
• 為什麼
– 看不懂也不需要看別人在寫什麼 (反之亦然)
– 聽不懂也不想聽別人在說什麼 (反之亦然)
• 後果
– 軟體無法做大,無法做快
Copyright@2013 Teddysoft
什麼是設計?
• A design is a plan for how to build a thing. To
design is to build a thing in one’s mind but not
yet in the real world.
《POSA volume 5》Copyright@2013 Teddysoft
設計的產出物是什麼?
討論:軟體設計的產出物又是
什麼?
什麼是軟體設計?
• 資料結構 + 演算法?
• Architecture Block Diagrams?
• UML Diagrams?
– Use case diagrams
– Class diagrams
– Sequence diagrams
– State machine diagrams
– …
• 其他答案?
Copyright@2013 Teddysoft
原始碼就是軟體設計
(Source code is the software design)
http://www.developerdotstar.com/mag/articles/reeves_design.html
Copyright@2013 Teddysoft
如果你相信原始碼就是軟體設計
• 程式當然要可以動,但程式不是可以動就
沒事了
• 程式是給人看的,不是給電腦看的
– 可讀性
– 可瞭解性
– 可維護性
– 可擴充性
Copyright@2013 Teddysoft
問題:設計容易嗎?
別人的設計,就是最好的設計
Copyright@2013 Teddysoft
模式的內涵:學會自己動手寫
出模式
Pattern
Copyright@2013 Teddysoft
Pattern
圖片來源: http://www.myschool.hk/image/learning/learning-2-6-1.jpg Copyright@2013 Teddysoft
一再重複出現的東西、事件、現
象,就稱為模式。
Copyright@2013 Teddysoft
Each pattern is a
three-part rule,
which express a
relation between a
certain context, a
problem, and a
solution.
Copyright@2013 Teddysoft
A pattern is a solution to a problem
in a context.
Copyright@2013 Teddysoft
World
Context
Problem
(Requirement,
What)
Solution
(How, How to,
How much)
Machine
A pattern is a solution to a problem in
a context
Problem
Copyright@2013 Teddysoft
先私底下看一個例子
• Context: 你是總統候選人。
• Problem: 明天就是投票日。你的民意支持度
離對手還落後5%。要如何勝選?
• Solution: 準備兩顆子彈,巧妙地打在鮪魚肚
上。受傷之後到熟識的醫院就醫,並立即主
動發布受傷新聞但是在開票前不要公布詳細
傷勢以博取同情。
Copyright@2013 Teddysoft
An Example, Take 1
• Context: 你是經營線上遊戲的業者。
• Problem: 為了快速有產品可以上市,你用高
價搶下國外知名產品的代理權。就在付款之
後不久,國外廠商惡性倒閉。要如何要回你
的簽約金?
• Solution: 找黑道去喬事情。
Copyright@2013 Teddysoft
A pattern is a solution to a
recurring problem in a context.
Copyright@2013 Teddysoft
An Example, Take 2
• Context: 你是經營線上遊戲的業者。
• Problem: 線上遊戲的市場競爭非常激烈,玩
家的選擇很多,因此傳統需要先付費才可以
玩的遊戲模式,要玩家在尚未入迷之前就先
付費變得越來越困難。要如何讓玩家願意掏
錢出來玩線上遊戲呢?
• Solution: 以永久免費遊戲為噱頭,先讓玩家
上癮,再要求玩家每月付費,否則將關閉遊
戲伺服器。
Copyright@2013 Teddysoft
A pattern is a proven solution to a
recurring problem in a context.
Copyright@2013 Teddysoft
An Example, Take 3
• Context: 你是經營線上遊戲的業者。
• Problem: 線上遊戲的市場競爭非常激烈,玩
家的選擇很多,因此傳統需要先付費才可以
玩的遊戲模式,要玩家在尚未入迷之前就先
付費變得越來越困難。要如何讓玩家願意掏
錢出來玩線上遊戲呢?
• Solution: 提供免費遊戲,先吸引玩家上癮,
再以販賣道具與周邊商品作為獲利來源。
Copyright@2013 Teddysoft
A pattern is a proven solution to a
recurring problem in a specific
context.
Copyright@2013 Teddysoft
An Example, Take 4
• Context: 線上遊戲的市場競爭非常激烈,玩
家的選擇很多,除非你是知名大廠,能推出
曠世巨作,否則以傳統先付費才可以玩的遊
戲模式,要玩家在尚未入迷之前就先付費變
得越來越困難。
• Problem: 要如何讓玩家願意掏錢出來玩線上
遊戲?
• Solution: 提供免費遊戲,先吸引玩家上癮,
再以販賣道具與周邊商品作為獲利來源。
Copyright@2013 Teddysoft
A pattern is a proven solution to a
recurring problem in a specific
context, and more.
Copyright@2013 Teddysoft
模式的六大基本元素
• Name : 樣式名稱,增加開發者的設計字彙
• Context: 描述問題發生的地形地物(美容前)
• Problem: 描述問題本身
• Force: 問題的限制或特性
• Solution: 解決問題的方法
• Resulting Context (Consequence): 套用解決方
案之後的結果(美容後)
Copyright@2013 Teddysoft
沒有Context便無法判斷Solution
• Problem: 要如何讓玩家願意掏錢出來玩線
上遊戲?
• Solution:
1. 推出著名大作,玩家不買不可
2. 採用免費遊戲策略,但如果要升級則玩家就
必須要花錢購買道具
3. 推出賭博性線上遊戲
Copyright@2013 Teddysoft
Force是推擠與拉扯Problem的作用力,
也是塑造Solution的決定因素
圖片來源: https://upload.wikimedia.org/wikipedia/commons/9/99/Libyen-sandwueste1.jpg Copyright@2013 Teddysoft
Each pattern is a three-part rule, which
expresses a relation between a certain
context, a problem, and a solution.
As an element in the world, each pattern is
a relationship between a certain context, a
certain system of forces which occurs
repeatedly in that context, and a certain
spatial configuration which allows these
forces to resolve themselves.
Copyright@2013 Teddysoft
An Example, Take 5.1
• Context: 線上遊戲的市場競爭非常激烈,玩家的
選擇很多,除非你是知名大廠,能推出曠世巨
作,否則以傳統先付費才可以玩的遊戲模式,
要玩家在尚未入迷之前就先付費變得越來越困
難。
• Problem: 要如何讓玩家在線上遊戲中付費?
• Forces:
– 安裝繁瑣或費時的遊戲將不易吸引玩家試玩,更談
不上收費的可能。
– 若玩家永遠只是付費,將減少他們持續玩同一款遊
戲的意願。
• Solution: 提供免費遊戲,先吸引玩家上癮,再
以販賣道具與周邊商品作為獲利來源。
Copyright@2013 Teddysoft
An Example, Take 5.2
• Context: 線上遊戲的市場競爭非常激烈,玩家的
選擇很多,因此傳統需要先付費才可以玩的遊
戲模式,要玩家在尚未入迷之前就先付費變得
越來越困難。
• Problem: 要如何讓玩家在線上遊戲中付費?
• Forces:
– 安裝繁瑣或費時的遊戲將不易吸引玩家試玩,更談
不上收費的可能。
– 若玩家永遠只是付費,將減少他們持續玩同一款遊
戲的意願。
• Solution: 提供快速、分段或免安裝的免費遊戲,
先吸引玩家上癮,再以販賣道具與周邊商品作
為獲利來源。提供網路商城,讓玩家可以買賣
道具,以提高遊戲的黏著度。Copyright@2013 Teddysoft
回頭修改 Problem
Copyright@2013 Teddysoft
An Example, Take 5.3
• Context: 線上遊戲的市場競爭非常激烈,玩家的選
擇很多,因此傳統需要先付費才可以玩的遊戲模式,
要玩家在尚未入迷之前就先付費變得越來越困難。
• Problem: 要如何讓玩家持續在線上遊戲中付費?
• Forces:
– 安裝繁瑣或費時的遊戲將不易吸引玩家試玩,更談不上
收費的可能。
– 若玩家永遠只是付費,將減少他們持續玩同一款遊戲的
意願。
• Solution: 提供快速、分段或免安裝的免費遊戲,先
吸引玩家上癮,再以販賣道具與周邊商品作為獲利
來源。提供網路商城,讓玩家可以買賣道具,以提
高遊戲的黏著度。Copyright@2013 Teddysoft
World
Context
Problem
(Requirement,
What)
Solution
(How, How to,
How much)
Machine
Force告訴我們為什麼模式所要解決的「問題」是一個真正的
問題—為什麼這個問題很難,為什麼需要一個聰明的,甚至
是違反直覺的解決方案。Force也是了解為何會採用此種解決
方案的關鍵。
Problem
force force
force
Copyright@2013 Teddysoft
什麼是設計?
• 設計是決定form、
context,以及兩者
之間的關係。
• 好的設計是form與
context的良好適應
關係。
《Notes on the Synthesis of Form》
Context
Form
force
force
force
force
Copyright@2013 Teddysoft
練習:看一個例子,寫出你所
觀察到的Solution
Copyright@2013 Teddysoft
捷運忠孝新生站
練習:寫出捷運轉乘站的
Force
Copyright@2013 Teddysoft
Resulting Context
Copyright@2013 Teddysoft
An Example, Take 6
• Context: 線上遊戲的市場競爭非常激烈,玩家的選擇很多,因此
傳統需要先付費才可以玩的遊戲模式,要玩家在尚未入迷之前就
先付費變得越來越困難。
• Problem: 要如何讓玩家持續在線上遊戲中付費?
• Forces:
– 安裝繁瑣或費時的遊戲將不易吸引玩家試玩,更談不上收費的可能。
– 若玩家永遠只是付費,將減少他們持續玩同一款遊戲的意願。
• Solution: 提供快速、分段或免安裝的免費遊戲,先吸引玩家上癮,
再以販賣道具與周邊商品作為獲利來源。提供網路商城,讓玩家
可以買賣道具,以提高遊戲的黏著度。
• Resulting Context:
– 玩家使用遊戲的門檻降低,較容易在短期間吸引大量的使用者人數
– 只要使用者人數中的一定比例付費購買道具便可達到損益平衡
– 如果玩家對遊戲反應不佳,或是玩的人數很多但付費人數太少,經
營者可能會血本無歸
Copyright@2013 Teddysoft
Pattern Name
Copyright@2013 Teddysoft
兩種命名方法
• 名詞片語 (Noun-phrase)
– 描述模式所建立或產生的結果
– 例子:Singleton, Command, Model-View-
Controller
• 動詞片語 (Verb-phrase)
– 給定一個指令,描述如何達到模式解決方案所要
求的狀態
– 例子:Don’t Talk to Strangers, Separate Material
Preparation from Integration
Copyright@2013 Teddysoft
A pattern is a process and a thing.
Copyright@2013 Teddysoft
A common ground for
communication.
Copyright@2013 Teddysoft
雖然剛剛模式範例的說明,是從
上而下,但實際上尋找模式的過
程,是從下而上。
Solution  Problem(Forces) 
Context
Copyright@2013 Teddysoft
Copyright@2013 Teddysoft
Copyright@2013 Teddysoft
練習:幫便利商店「集點活動」
寫出一個模式
Copyright@2013 Teddysoft
模式是一種公式
• 套公式解題比較快且不易出錯
– 建構式數學 vs. 數學公式
• 問題百百種,如何能有公式可解決全部的
問題?
– 一個模式只能解決一個特定的問題
Copyright@2013 Teddysoft
常見模式的種類
• Analysis Pattern
• Software Architecture Pattern
• Design Pattern
• Implementation Pattern
• HCI Pattern
Copyright@2013 Teddysoft
透過模式建立軟體架構與設計
整體先於部分,然後透過差異化
的過程將整體逐步展開
Copyright@2013 Teddysoft
保全監控系統初始架構
Client
Type C
Client
Type B
Client
Type A
Server
Client
Type D
Device A
Device B
Device C
Device D
DatabaseUI
User
Copyright@2013 Teddysoft
第1次分化
Client
Type C
Client
Type B
Client
Type A
Server
Client
Type D
Device A
Device B
Device C
Device D
DatabaseUI
User
<server>
<client>
<client>
<server>
<client> <server>
<server>
<client>
<server><client>
Copyright@2013 Teddysoft
第2次分化
Client
Type C
Client
Type B
Client
Type A
Server
Client
Type D
Device A
Device B
Device C
Device D
DatabaseUI
User
<server>
<client>
<client>
<server>
<client> <server>
<server>
<client>
<server><client>
Plug-in
Plug
-in
Copyright@2013 Teddysoft
第3次分化
Client
Type C
Client
Type B
Client
Type A
Server
Client
Type D
Device A
Device B
Device C
Device D
DatabaseUI
User
<server>
<client>
<client>
<server>
<client> <server>
<server>
<client>
<server><client>
Plug-in
Plug
-in
OR-
Mapping
OR-
Mapping
Copyright@2013 Teddysoft
第4次分化
Client
Type C
Client
Type B
Client
Type A
Server
Client
Type D
Device A
Device B
Device C
Device D
DatabaseUI
User
<server>
<client>
<client>
<server>
<client> <server>
<server>
<client>
<server><client>
Plug-in
Plug
-in
OR-
Mapping
OR-
Mapping
State
Observer
Command …
Copyright@2013 Teddysoft
12個物件導向設計觀念與原則
6個物件導向設計觀念
• Class, Object, Instance
• Interface
• Inheritance
• Polymorphism
• Composition
• Delegation
Copyright@2013 Teddysoft
6個物件導向設計原則
• 模組化。
• 減少耦合,增加內聚。
• 尋找hot spot。
• 生物多樣性原則。
• Programming to an Interface, not an
Implementation (GoF).
• Favor object composition over class
inheritance (GoF).
Copyright@2013 Teddysoft
兩本武功祕笈
Copyright@2013 Teddysoft
設計模式密碼:3 3 23
設計模式的目的
• 紀錄人們設計物件導向軟體上的經驗。
• 重複使用已知成功的設計及架構。
• 提供一種有結構的文件化方式讓設計者容
易模仿已知的成功設計經驗。
• 幫助我們了解現存的物件導向系統。
不再雞同鴨講…XD
Copyright@2013 Teddysoft
GoF (Gang of Four) 設計模式的格式
• 為什麼叫做 GoF Design Patterns?
– 因為作者有四個人, Erich Gamma, Richard Helm,
Ralph Johnson, John Vlissides
• GoF設計模式包含13個元素:
– Pattern Name, Intent, Also Known As, Motivation,
Applicability, Structure, Participants,
Collaborations, Consequences, Implementation,
Sample Code, Known Uses, Related Patterns
Copyright@2013 Teddysoft
兩種設計模式撰寫格式比較
Copyright@2013 Teddysoft
依據用途,設計模式可分為三大類
• Creational Patterns (生成模式)
– Abstract Factory, Builder, Factory Method, Prototype,
Singleton
• Structural Patterns (結構模式)
– Adapter, Bridge, Composite, Decorator, Façade,
Flyweight, Proxy
• Behavioral Patterns (行為模式)
– Chain of Responsibility, Command, Interpreter, Iterator,
Mediator, Memento, Observer, State, Strategy,
Template Method, Visitor
Copyright@2013 Teddysoft
依據內部關係,設計模式可分為另
外三大類
• Abstract Coupling (抽象耦合)
– State, Factory Method, Observer, Bridge, Builder,
Command, Iterator, Visitor, Interpreter, Mediator,
Adapter, Prototype, Proxy, Strategy
• Recursive Structures (遞迴結構)
– Composite, Chain of Responsibility, Decorator
• Other Patterns (其他)
– Abstract Factory, Flyweight, Singleton, Template
Method, Memento
Copyright@2013 Teddysoft
GoF書中一共有23個設計模式
• 5個生成模式
– Abstract Factory, Builder, Factory Method, Prototype,
Singleton
• 7個結構模式
– Adapter, Bridge, Composite, Decorator, Façade,
Flyweight, Proxy
• 11個行為模式
– Chain of Responsibility, Command, Interpreter, Iterator,
Mediator, Memento, Observer, State, Strategy,
Template Method, Visitor
Copyright@2013 Teddysoft
Day 1 快速回顧

Contenu connexe

Tendances

はじめる! Redmine (2015)
はじめる! Redmine (2015)はじめる! Redmine (2015)
はじめる! Redmine (2015)Go Maeda
 
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解するそうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解するshigeki_ohtsu
 
20171005 告白に学ぶ http status code
20171005 告白に学ぶ http status code20171005 告白に学ぶ http status code
20171005 告白に学ぶ http status codeShinichi Takahashi
 
アプリ起動時間高速化 ~推測するな、計測せよ~
アプリ起動時間高速化 ~推測するな、計測せよ~アプリ起動時間高速化 ~推測するな、計測せよ~
アプリ起動時間高速化 ~推測するな、計測せよ~gree_tech
 
Pattern based problem solving-published
Pattern based problem solving-publishedPattern based problem solving-published
Pattern based problem solving-publishedteddysoft
 
Development myshoes and Provide Cycloud-hosted runner -- GitHub Actions with ...
Development myshoes and Provide Cycloud-hosted runner -- GitHub Actions with ...Development myshoes and Provide Cycloud-hosted runner -- GitHub Actions with ...
Development myshoes and Provide Cycloud-hosted runner -- GitHub Actions with ...whywaita
 
TLS 1.3 と 0-RTT のこわ〜い話
TLS 1.3 と 0-RTT のこわ〜い話TLS 1.3 と 0-RTT のこわ〜い話
TLS 1.3 と 0-RTT のこわ〜い話Kazuho Oku
 
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニックinfinite_loop
 
PostgreSQLアンチパターン
PostgreSQLアンチパターンPostgreSQLアンチパターン
PostgreSQLアンチパターンSoudai Sone
 
NuxtでAPIサーバー立ててみた
NuxtでAPIサーバー立ててみたNuxtでAPIサーバー立ててみた
NuxtでAPIサーバー立ててみたssuserbf0fbd
 
【Unity道場スペシャル 2017京都】最適化をする前に覚えておきたい技術
【Unity道場スペシャル 2017京都】最適化をする前に覚えておきたい技術【Unity道場スペシャル 2017京都】最適化をする前に覚えておきたい技術
【Unity道場スペシャル 2017京都】最適化をする前に覚えておきたい技術Unity Technologies Japan K.K.
 
Redmine にいろいろ埋め込んでみた
Redmine にいろいろ埋め込んでみたRedmine にいろいろ埋め込んでみた
Redmine にいろいろ埋め込んでみたKohei Nakamura
 
20160526 依存関係逆転の原則
20160526 依存関係逆転の原則20160526 依存関係逆転の原則
20160526 依存関係逆転の原則bonjin6770 Kurosawa
 
DDDを実践できるエンジニアを育成するための取り組みについて
DDDを実践できるエンジニアを育成するための取り組みについてDDDを実践できるエンジニアを育成するための取り組みについて
DDDを実践できるエンジニアを育成するための取り組みについてBIGLOBE Inc.
 
Scrum and xp from the trenches (1st edition, Chinese)
Scrum and xp from the trenches   (1st edition, Chinese)Scrum and xp from the trenches   (1st edition, Chinese)
Scrum and xp from the trenches (1st edition, Chinese)Jen-Chieh Ko
 
なかったらINSERTしたいし、あるならロック取りたいやん?
なかったらINSERTしたいし、あるならロック取りたいやん?なかったらINSERTしたいし、あるならロック取りたいやん?
なかったらINSERTしたいし、あるならロック取りたいやん?ichirin2501
 
コンテナ仮想、その裏側 〜user namespaceとrootlessコンテナ〜
コンテナ仮想、その裏側 〜user namespaceとrootlessコンテナ〜コンテナ仮想、その裏側 〜user namespaceとrootlessコンテナ〜
コンテナ仮想、その裏側 〜user namespaceとrootlessコンテナ〜Retrieva inc.
 
Halo2 におけるHFSM(階層型有限状態マシン) 【ビヘイビアツリー解説】
Halo2 におけるHFSM(階層型有限状態マシン)  【ビヘイビアツリー解説】Halo2 におけるHFSM(階層型有限状態マシン)  【ビヘイビアツリー解説】
Halo2 におけるHFSM(階層型有限状態マシン) 【ビヘイビアツリー解説】Youichiro Miyake
 

Tendances (20)

はじめる! Redmine (2015)
はじめる! Redmine (2015)はじめる! Redmine (2015)
はじめる! Redmine (2015)
 
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解するそうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
 
例外處理設計
例外處理設計例外處理設計
例外處理設計
 
20171005 告白に学ぶ http status code
20171005 告白に学ぶ http status code20171005 告白に学ぶ http status code
20171005 告白に学ぶ http status code
 
アプリ起動時間高速化 ~推測するな、計測せよ~
アプリ起動時間高速化 ~推測するな、計測せよ~アプリ起動時間高速化 ~推測するな、計測せよ~
アプリ起動時間高速化 ~推測するな、計測せよ~
 
Pattern based problem solving-published
Pattern based problem solving-publishedPattern based problem solving-published
Pattern based problem solving-published
 
Development myshoes and Provide Cycloud-hosted runner -- GitHub Actions with ...
Development myshoes and Provide Cycloud-hosted runner -- GitHub Actions with ...Development myshoes and Provide Cycloud-hosted runner -- GitHub Actions with ...
Development myshoes and Provide Cycloud-hosted runner -- GitHub Actions with ...
 
TLS 1.3 と 0-RTT のこわ〜い話
TLS 1.3 と 0-RTT のこわ〜い話TLS 1.3 と 0-RTT のこわ〜い話
TLS 1.3 と 0-RTT のこわ〜い話
 
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
 
PostgreSQLアンチパターン
PostgreSQLアンチパターンPostgreSQLアンチパターン
PostgreSQLアンチパターン
 
NuxtでAPIサーバー立ててみた
NuxtでAPIサーバー立ててみたNuxtでAPIサーバー立ててみた
NuxtでAPIサーバー立ててみた
 
【Unity道場スペシャル 2017京都】最適化をする前に覚えておきたい技術
【Unity道場スペシャル 2017京都】最適化をする前に覚えておきたい技術【Unity道場スペシャル 2017京都】最適化をする前に覚えておきたい技術
【Unity道場スペシャル 2017京都】最適化をする前に覚えておきたい技術
 
Redmine にいろいろ埋め込んでみた
Redmine にいろいろ埋め込んでみたRedmine にいろいろ埋め込んでみた
Redmine にいろいろ埋め込んでみた
 
Docker Tokyo
Docker TokyoDocker Tokyo
Docker Tokyo
 
20160526 依存関係逆転の原則
20160526 依存関係逆転の原則20160526 依存関係逆転の原則
20160526 依存関係逆転の原則
 
DDDを実践できるエンジニアを育成するための取り組みについて
DDDを実践できるエンジニアを育成するための取り組みについてDDDを実践できるエンジニアを育成するための取り組みについて
DDDを実践できるエンジニアを育成するための取り組みについて
 
Scrum and xp from the trenches (1st edition, Chinese)
Scrum and xp from the trenches   (1st edition, Chinese)Scrum and xp from the trenches   (1st edition, Chinese)
Scrum and xp from the trenches (1st edition, Chinese)
 
なかったらINSERTしたいし、あるならロック取りたいやん?
なかったらINSERTしたいし、あるならロック取りたいやん?なかったらINSERTしたいし、あるならロック取りたいやん?
なかったらINSERTしたいし、あるならロック取りたいやん?
 
コンテナ仮想、その裏側 〜user namespaceとrootlessコンテナ〜
コンテナ仮想、その裏側 〜user namespaceとrootlessコンテナ〜コンテナ仮想、その裏側 〜user namespaceとrootlessコンテナ〜
コンテナ仮想、その裏側 〜user namespaceとrootlessコンテナ〜
 
Halo2 におけるHFSM(階層型有限状態マシン) 【ビヘイビアツリー解説】
Halo2 におけるHFSM(階層型有限状態マシン)  【ビヘイビアツリー解説】Halo2 におけるHFSM(階層型有限状態マシン)  【ビヘイビアツリー解説】
Halo2 におけるHFSM(階層型有限状態マシン) 【ビヘイビアツリー解説】
 

Similaire à Design Patterns這樣學就會了:入門班 Day1 教材

Getting Real
Getting RealGetting Real
Getting Realrogerwang
 
Design Thinking Notes
Design Thinking NotesDesign Thinking Notes
Design Thinking NotesTsungYi Tsai
 
先不談 agile 不 agile 了,你有聽過 deadline 嗎?
先不談 agile 不 agile 了,你有聽過 deadline 嗎?先不談 agile 不 agile 了,你有聽過 deadline 嗎?
先不談 agile 不 agile 了,你有聽過 deadline 嗎?Terry Wang
 
如何做好推荐系统——冯沁原
如何做好推荐系统——冯沁原如何做好推荐系统——冯沁原
如何做好推荐系统——冯沁原Qinyuan Feng
 
如何創造讓會友難以忘懷的服務體驗
如何創造讓會友難以忘懷的服務體驗如何創造讓會友難以忘懷的服務體驗
如何創造讓會友難以忘懷的服務體驗基欽 劉
 
關於產品經理的角色與職責
關於產品經理的角色與職責關於產品經理的角色與職責
關於產品經理的角色與職責Cloud Chen
 
產品企劃分享版2010十一月
產品企劃分享版2010十一月產品企劃分享版2010十一月
產品企劃分享版2010十一月Mr PM
 
0606最有效的終極網路廣告術
0606最有效的終極網路廣告術0606最有效的終極網路廣告術
0606最有效的終極網路廣告術上瑋 童
 
新3P行銷- Person, Page, Party
新3P行銷- Person, Page, Party新3P行銷- Person, Page, Party
新3P行銷- Person, Page, Party悠識學院
 
Offerme2_Introduction
Offerme2_IntroductionOfferme2_Introduction
Offerme2_IntroductionFred Lin
 
产品经理的情报收集与分析
产品经理的情报收集与分析产品经理的情报收集与分析
产品经理的情报收集与分析VImLai
 
Our experience to start a startup
Our experience to start a startupOur experience to start a startup
Our experience to start a startupYenwen Feng
 
Week 16 - appWorks_IC Jan
Week 16 - appWorks_IC JanWeek 16 - appWorks_IC Jan
Week 16 - appWorks_IC JanAppUniverz Org
 
Layer 8 - Open source communities and your product
Layer 8  - Open source communities and your productLayer 8  - Open source communities and your product
Layer 8 - Open source communities and your productRex Tsai
 
Conference Brochure Scrum Gathering Shanghai 2011
Conference Brochure Scrum Gathering Shanghai 2011Conference Brochure Scrum Gathering Shanghai 2011
Conference Brochure Scrum Gathering Shanghai 2011Shining Hsiong
 
Mopcon 2021 Scrum 是新的死亡行軍嗎?
Mopcon 2021   Scrum 是新的死亡行軍嗎?Mopcon 2021   Scrum 是新的死亡行軍嗎?
Mopcon 2021 Scrum 是新的死亡行軍嗎?Jen-Chieh Ko
 
拒絕再寫無效規格,來學學實例化需求! (Agile Summit TW 2023)
拒絕再寫無效規格,來學學實例化需求! (Agile Summit TW 2023)拒絕再寫無效規格,來學學實例化需求! (Agile Summit TW 2023)
拒絕再寫無效規格,來學學實例化需求! (Agile Summit TW 2023)Fong Liou
 
LinkedIn, the Serious Network 繁體中文版
LinkedIn, the Serious Network  繁體中文版LinkedIn, the Serious Network  繁體中文版
LinkedIn, the Serious Network 繁體中文版Rex Yuan
 

Similaire à Design Patterns這樣學就會了:入門班 Day1 教材 (20)

Getting Real
Getting RealGetting Real
Getting Real
 
Design Thinking Notes
Design Thinking NotesDesign Thinking Notes
Design Thinking Notes
 
先不談 agile 不 agile 了,你有聽過 deadline 嗎?
先不談 agile 不 agile 了,你有聽過 deadline 嗎?先不談 agile 不 agile 了,你有聽過 deadline 嗎?
先不談 agile 不 agile 了,你有聽過 deadline 嗎?
 
如何做好推荐系统——冯沁原
如何做好推荐系统——冯沁原如何做好推荐系统——冯沁原
如何做好推荐系统——冯沁原
 
如何創造讓會友難以忘懷的服務體驗
如何創造讓會友難以忘懷的服務體驗如何創造讓會友難以忘懷的服務體驗
如何創造讓會友難以忘懷的服務體驗
 
關於產品經理的角色與職責
關於產品經理的角色與職責關於產品經理的角色與職責
關於產品經理的角色與職責
 
產品企劃分享版2010十一月
產品企劃分享版2010十一月產品企劃分享版2010十一月
產品企劃分享版2010十一月
 
0606最有效的終極網路廣告術
0606最有效的終極網路廣告術0606最有效的終極網路廣告術
0606最有效的終極網路廣告術
 
新3P行銷- Person, Page, Party
新3P行銷- Person, Page, Party新3P行銷- Person, Page, Party
新3P行銷- Person, Page, Party
 
Offerme2_Introduction
Offerme2_IntroductionOfferme2_Introduction
Offerme2_Introduction
 
PM skills
PM skillsPM skills
PM skills
 
产品经理的情报收集与分析
产品经理的情报收集与分析产品经理的情报收集与分析
产品经理的情报收集与分析
 
Our experience to start a startup
Our experience to start a startupOur experience to start a startup
Our experience to start a startup
 
Week 16 - appWorks_IC Jan
Week 16 - appWorks_IC JanWeek 16 - appWorks_IC Jan
Week 16 - appWorks_IC Jan
 
Layer 8 - Open source communities and your product
Layer 8  - Open source communities and your productLayer 8  - Open source communities and your product
Layer 8 - Open source communities and your product
 
Conference Brochure Scrum Gathering Shanghai 2011
Conference Brochure Scrum Gathering Shanghai 2011Conference Brochure Scrum Gathering Shanghai 2011
Conference Brochure Scrum Gathering Shanghai 2011
 
Mopcon 2021 Scrum 是新的死亡行軍嗎?
Mopcon 2021   Scrum 是新的死亡行軍嗎?Mopcon 2021   Scrum 是新的死亡行軍嗎?
Mopcon 2021 Scrum 是新的死亡行軍嗎?
 
拒絕再寫無效規格,來學學實例化需求! (Agile Summit TW 2023)
拒絕再寫無效規格,來學學實例化需求! (Agile Summit TW 2023)拒絕再寫無效規格,來學學實例化需求! (Agile Summit TW 2023)
拒絕再寫無效規格,來學學實例化需求! (Agile Summit TW 2023)
 
HP39活動簡介
HP39活動簡介HP39活動簡介
HP39活動簡介
 
LinkedIn, the Serious Network 繁體中文版
LinkedIn, the Serious Network  繁體中文版LinkedIn, the Serious Network  繁體中文版
LinkedIn, the Serious Network 繁體中文版
 

Plus de teddysoft

Dci vs aggregate_dddtw_2021-0.3-preview
Dci vs aggregate_dddtw_2021-0.3-previewDci vs aggregate_dddtw_2021-0.3-preview
Dci vs aggregate_dddtw_2021-0.3-previewteddysoft
 
漫談重構
漫談重構漫談重構
漫談重構teddysoft
 
Agile the timeless way of software development-2019-05-17-v1.2-published
Agile the timeless way of software development-2019-05-17-v1.2-publishedAgile the timeless way of software development-2019-05-17-v1.2-published
Agile the timeless way of software development-2019-05-17-v1.2-publishedteddysoft
 
從Bowling Game Kata看敏捷開發
從Bowling Game Kata看敏捷開發從Bowling Game Kata看敏捷開發
從Bowling Game Kata看敏捷開發teddysoft
 
當Scrum遇到Pattern
當Scrum遇到Pattern當Scrum遇到Pattern
當Scrum遇到Patternteddysoft
 
說出一嘴好設計 1.1
說出一嘴好設計 1.1說出一嘴好設計 1.1
說出一嘴好設計 1.1teddysoft
 
跟著Teddy讀Pattern
跟著Teddy讀Pattern跟著Teddy讀Pattern
跟著Teddy讀Patternteddysoft
 
洗白你的軟體架構
洗白你的軟體架構洗白你的軟體架構
洗白你的軟體架構teddysoft
 
如何學好設計模式
如何學好設計模式如何學好設計模式
如何學好設計模式teddysoft
 
Bdd atdd sbe_tdd_ddd_published
Bdd atdd sbe_tdd_ddd_publishedBdd atdd sbe_tdd_ddd_published
Bdd atdd sbe_tdd_ddd_publishedteddysoft
 
重構三兩事
重構三兩事重構三兩事
重構三兩事teddysoft
 
了解模式讓你更敏捷 (C C Agile 活動分享)
了解模式讓你更敏捷 (C C Agile 活動分享)了解模式讓你更敏捷 (C C Agile 活動分享)
了解模式讓你更敏捷 (C C Agile 活動分享)teddysoft
 
從五個小故事看敏捷開發精神
從五個小故事看敏捷開發精神從五個小故事看敏捷開發精神
從五個小故事看敏捷開發精神teddysoft
 
軟體開發成功的秘訣
軟體開發成功的秘訣軟體開發成功的秘訣
軟體開發成功的秘訣teddysoft
 
[演講] Scrum導入經驗分享
[演講] Scrum導入經驗分享[演講] Scrum導入經驗分享
[演講] Scrum導入經驗分享teddysoft
 
那一夜我們說Pattern design patterns 20周年-published
那一夜我們說Pattern design patterns 20周年-published那一夜我們說Pattern design patterns 20周年-published
那一夜我們說Pattern design patterns 20周年-publishedteddysoft
 
好設計如何好 @ C.C. Agile #14
好設計如何好 @ C.C. Agile #14好設計如何好 @ C.C. Agile #14
好設計如何好 @ C.C. Agile #14teddysoft
 
[教材] 例外處理設計與重構實作班201309
[教材] 例外處理設計與重構實作班201309[教材] 例外處理設計與重構實作班201309
[教材] 例外處理設計與重構實作班201309teddysoft
 
搞懂Java例外處理的難題:Checked與Unchecked Exceptions不再是問題
搞懂Java例外處理的難題:Checked與Unchecked Exceptions不再是問題搞懂Java例外處理的難題:Checked與Unchecked Exceptions不再是問題
搞懂Java例外處理的難題:Checked與Unchecked Exceptions不再是問題teddysoft
 
Java 例外處理壞味道與重構技術
Java 例外處理壞味道與重構技術Java 例外處理壞味道與重構技術
Java 例外處理壞味道與重構技術teddysoft
 

Plus de teddysoft (20)

Dci vs aggregate_dddtw_2021-0.3-preview
Dci vs aggregate_dddtw_2021-0.3-previewDci vs aggregate_dddtw_2021-0.3-preview
Dci vs aggregate_dddtw_2021-0.3-preview
 
漫談重構
漫談重構漫談重構
漫談重構
 
Agile the timeless way of software development-2019-05-17-v1.2-published
Agile the timeless way of software development-2019-05-17-v1.2-publishedAgile the timeless way of software development-2019-05-17-v1.2-published
Agile the timeless way of software development-2019-05-17-v1.2-published
 
從Bowling Game Kata看敏捷開發
從Bowling Game Kata看敏捷開發從Bowling Game Kata看敏捷開發
從Bowling Game Kata看敏捷開發
 
當Scrum遇到Pattern
當Scrum遇到Pattern當Scrum遇到Pattern
當Scrum遇到Pattern
 
說出一嘴好設計 1.1
說出一嘴好設計 1.1說出一嘴好設計 1.1
說出一嘴好設計 1.1
 
跟著Teddy讀Pattern
跟著Teddy讀Pattern跟著Teddy讀Pattern
跟著Teddy讀Pattern
 
洗白你的軟體架構
洗白你的軟體架構洗白你的軟體架構
洗白你的軟體架構
 
如何學好設計模式
如何學好設計模式如何學好設計模式
如何學好設計模式
 
Bdd atdd sbe_tdd_ddd_published
Bdd atdd sbe_tdd_ddd_publishedBdd atdd sbe_tdd_ddd_published
Bdd atdd sbe_tdd_ddd_published
 
重構三兩事
重構三兩事重構三兩事
重構三兩事
 
了解模式讓你更敏捷 (C C Agile 活動分享)
了解模式讓你更敏捷 (C C Agile 活動分享)了解模式讓你更敏捷 (C C Agile 活動分享)
了解模式讓你更敏捷 (C C Agile 活動分享)
 
從五個小故事看敏捷開發精神
從五個小故事看敏捷開發精神從五個小故事看敏捷開發精神
從五個小故事看敏捷開發精神
 
軟體開發成功的秘訣
軟體開發成功的秘訣軟體開發成功的秘訣
軟體開發成功的秘訣
 
[演講] Scrum導入經驗分享
[演講] Scrum導入經驗分享[演講] Scrum導入經驗分享
[演講] Scrum導入經驗分享
 
那一夜我們說Pattern design patterns 20周年-published
那一夜我們說Pattern design patterns 20周年-published那一夜我們說Pattern design patterns 20周年-published
那一夜我們說Pattern design patterns 20周年-published
 
好設計如何好 @ C.C. Agile #14
好設計如何好 @ C.C. Agile #14好設計如何好 @ C.C. Agile #14
好設計如何好 @ C.C. Agile #14
 
[教材] 例外處理設計與重構實作班201309
[教材] 例外處理設計與重構實作班201309[教材] 例外處理設計與重構實作班201309
[教材] 例外處理設計與重構實作班201309
 
搞懂Java例外處理的難題:Checked與Unchecked Exceptions不再是問題
搞懂Java例外處理的難題:Checked與Unchecked Exceptions不再是問題搞懂Java例外處理的難題:Checked與Unchecked Exceptions不再是問題
搞懂Java例外處理的難題:Checked與Unchecked Exceptions不再是問題
 
Java 例外處理壞味道與重構技術
Java 例外處理壞味道與重構技術Java 例外處理壞味道與重構技術
Java 例外處理壞味道與重構技術
 

Design Patterns這樣學就會了:入門班 Day1 教材