自我介紹
- 電算中心工讀生
- 曾於工研院擔任小軟工讀生
- Wikidata台中地方學專題聚會主持人
- 主要以Web前端開發為主
大家好,目前是剛考上資工所的大四生,也有參加FLOSS社群,這次想利用七天的時間閱讀設計模式,正好有一本書叫做7天學會設計模式設計模式也可以這樣學,書中介紹了常見的設計模式,所以接下來這7天都會撰寫閱讀書摘,並且同時培養自己閱讀習慣。
書籍資訊
- 作者: Yan(硯取歪)
- 出版社:博碩
- 出版日期:2017/04/25
- ISBN: 978-986-434-204-4
為何學習設計模式
當project越寫越龐大之後,maintain的難度就越來越高,如果有Design Patterns,不僅能夠加速維護程式碼之速度,也能夠方便於和其他開發人員溝通。
7天目標
了解GoF的23個設計模式之概念與基本用法
物件導向程式設計(Object-Oriented Programming)
書本最前面寫到在閱讀之前要知道甚麼是OOP,以下我們就快速複習一下OOP吧!
類與物件
類(Class):
定義了一件事物的抽象特點。類的定義包含了資料的形式以及對資料的操作。
from Wikipedia物件(Object): 類的實例
- 封裝:
- Public
- Private
- Protected
- 繼承:
#define PI 3.1415926
#include <iostream>
#include <cmath>
using namespace std;
class Const
{
protected:
int radius;
int height;
public:
void setRadius(int r)
{
radius = r;
}
void setHeight(int h)
{
height = h;
}
};
//Cylinder繼承Const類別,並獲得父類別之屬性
class Cylinder : public Const
{
public:
double getVolume()
{
return (pow(radius,2) * PI * height);
}
};
int main()
{
Cylinder Instance;
Instance.setRadius(10);
Instance.setHeight(25);
cout << "Volume = " << Instance.getVolume() << endl;
return 0;
}
- 多型
- 多載:
#include <iostream>
using namespace std;
int add(int x, int y);
int add(int x, int y, int z);
int main()
{
cout << "5 + 3 = " << add(5, 3) << endl;
cout << "9 + 6 + 7 = " << add(9, 6, 7) << endl;
}
int add(int x, int y) {
return (x + y);
}
int add(int x, int y, int z) {
return (x + y + z);
}
- Source Code: Github
系列文規劃
Day | 內容 |
---|---|
Day 1 | SOLID原則 |
Day 1 | 單例模式 |
Day 1 | 簡單工廠模式 |
Day 2 | 工廠模式 |
Day 2 | 抽象工廠模式 |
Day 2 | 策略模式 |
Day 2 | 裝飾者模式 |
Day 3 | 觀察者模式 |
Day 3 | 命令模式 |
Day 3 | 轉接器模式 |
Day 3 | 表象模式 |
Day 4 | 樣板模式 |
Day 4 | 合成模式 |
Day 4 | 狀態模式 |
Day 4 | 代理模式 |
Day 5 | 走訪器模式 |
Day 5 | 建造者模式 |
Day 5 | 責任鏈模式 |
Day 5 | 解譯器模式 |
Day 6 | 中介者模式 |
Day 6 | 原型模式 |
Day 6 | 橋梁模式 |
Day 7 | 備忘錄模式 |
Day 7 | 蠅量級模式 |
Day 7 | 拜訪者模式 |