---
title: Liskov Substitution Principle
tags: mentorship, Design Pattern
description: 2019/11/11
---
# SOLID 之 L — 里氏替換原則
SOLID 的第三個原則是 Liskov Substitution Principle,里氏替換原則。
它的定義:
> “Subtypes must be substitutable for their base types.”
> 「子類別要可以替換掉父類別」
這個定義的重點是,子類替換掉父類後不會影響原有功能。
所以子類不能做跟父類不一致的事,所謂的不一致,是就**功能**而言。
是**功能、功能、功能**喔,不是說實作要完全一樣,如果實作內容完全一樣,不就失去多型的功能嗎?
比方說父類的有一個 function 叫 save(),其功能是把 user 資料存到 user default,它的子類如果覆寫 save(),它的實作不能失去「把 user 資料存到 user default」 的功能,但子類
Natalie changed 5 years agoView mode Like Bookmark
---
title: Open Close Principle
tags: mentorship, Design Pattern
description: 2019/10/10
---
# SOLID 之 O — 開放封閉原則
[TOC]
SOLID 的第二個原則是 Open Close Principle,開放封閉原則。
它的定義:
> “software entities (classes, modules, functions, etc.) should be open for extension, but closed for modification”
> 「對擴展開放,對修改關閉」
白話一點來說,就是「只能加程式碼,不能改程式碼」,意思是指新的功能不需要靠修改原有的程式碼來完成,而是在原有的程式碼加上寫新的程式碼去完成。
這樣同樣是為了降低修改程式碼而破壞原有功能的可能,
若只新增程式碼,原有程式碼因為沒有修改,理論上問題會比較少。
但 SOLID 只是最高指導原則,實作上很難做到完全不修改,個人認為不用太過糾結是不是會改到程
Natalie changed 5 years agoView mode Like Bookmark
---
title: How to Read a Class Diagram
tags: 讀書會, Design Pattern
description: 2019/08/18
---
# Swift Design Pattern 讀書會
---
### Chapter 2: How to Read a Class Diagram
---
開始之前...
---
分享:
你的開發流程是怎樣?
從拿到需求到 deploy 的過程
---
上集提要:
Design patterns aren’t concrete implementations, but rather, they are a starting point for writing code.
---
什麼是 class diagram ?
- UML 一種
- 描述類別之間的關係
---
## 為什麼要用 UML?
---
為什麼要用 UML?
我的想法:
自然語言很囉唆 + 容易引起歧義
UML 一目瞭然
---
類別之間的關係可以有什麼關係?
1. ia
Natalie changed 6 years agoSlide mode Like Bookmark