除了學習每個語言基本語法和繼承多型之類的寫法之外
還需要學好Design Pattern,Design Pattern是所有語言都可以共通的概念,只是完成他的寫法不同
Design Pattern (不只這10種)
singleton:
一次只能存在唯一instance的物件(object)
使用範例:Settings
prototype:
複製(clone)的高端用語
建立(create)時是"複製"物件而不是去"extending"物件
builder:
用方法(method)去建立物件而不是用建構子(constructor)去建立
真實例子:JQuery
factory:
不直接建立變數去instantiate物件,而是用function或method去建立物件
使用範例:cross platfrom app - 用條件式去決定哪種button要顯示給用戶
facade:
一種簡易的API,用來隱藏代碼庫(code base)的low level detail
使用範例:建立一個class,這個class包含了low level system操作,讓別的程式去依賴這個class,減輕程式操作難度(和撰寫難度)
真實例子:JQuery
proxy:
替代(substitue)的高端用語
用"代理人(物?)"去把目標物件置換掉
真實例子:Vue's reactivity system
iterator:
遍歷物件s的集合,迴圈 (有熟悉的東西!)
Observer:
Many objects subscribe to events that are broadcast from another object.
一對多的關係
在時間的維度上進行的loop行為(有人固定跑來問你進度完成的怎樣?(天阿))
Mediator
就是個中間人或經紀人
真實例子:1. 飛機起飛降落的塔台控制(點) 2. Middleware
State
切換不同的(有限個)狀態下,物件的行為會不同
真實例子:有限狀態機
Jonathan Hoffman's comment
為了能夠更好的跟其他開發者溝通,要好好學UML,把想表達的架構直接圖解
為了寫好物件導向,必須更了解手上使用語言的特性
10 Design Patterns Explained in 10 Minutes
[軟體推薦] 開源圖表繪製軟體
Java Full Course for Beginners ☕ by Bro Code
Day 27: 使用 VS Code 來開發 Java
C++
決定定居visual studio code on macOS
follow official doc to setup environment here
Compiler
$> clang --version
Apple clang version 13.0.0 (clang-1300.0.29.3)
Target: x86_64-apple-darwin20.6.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
Visual Studio Code on macOS
Using Clang in Visual Studio Code # 仔細看
Day 07: 這就是我喜歡的小地方:IntelliSense
C/C++ for Visual Studio Code
String in C++
Problem: The preLaunchTask 'C/C++: clang++ build active file' terminated with exit code -1.
expected ';' at end of declaration
range-based for loop is a C++11 extension [-Wc++11-extensions]
Sol:
在task.json的"args"加入指定大於11的c++standard
"args": [
"-g",
"main.cpp",
"-o",
"test"
],
"args": [
"-g",
"-std=c++14",
"main.cpp",
"-o",
"test"
],
or
"args": [
"-g",
"-std=c++17",
"main.cpp",
"-o",
"test"
],
10/2 更新:c++ string