Skip to content

lvnko/design-pattern

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

安裝步驟

  1. 環境建置 ts-node 執行環境
$ npm install -g ts-node    # 全域安裝 ts-node 命令
  1. 建立一個專案資料夾,並打開
$ mkdir design-pattern ; cd design-pattern
  1. 此時為了能順利運行 node-ts 的指令,需要確認開發環境中運行的 node 版本為 v14
$ nvm use v14.21.1
  1. 使用 npm 建立 node 專案
$ npm init

Hint: 期間 npm 會詢問你一些問題,這部分可以視個人情況自行回答。

完成之後應該會在資料夾中看到 package.json 檔案,此為 nodeJs 管理依賴套件的設置文件。

  1. 安裝 ts-node 相關套件
# 在本專案安裝 typescript 相關套件, -D 代表只裝在 develop 環境
$ npm install -D typescript
$ npm install -D tslib @types/node

# 安裝 nodeJs version 12 的基礎設定
$ npm install -D @tsconfig/node12
  1. 我們建立一個 tsconfig.json,去擴充剛剛安裝的 tsconfig
{
  "extends": "@tsconfig/node12/tsconfig.json",
  "compilerOptions": {
    "module": "commonjs",
    "noImplicitAny": true,
    "removeComments": true,
    "preserveConstEnums": true,
    "sourceMap": true,
    "moduleResolution": "node"
  },
  "include": ["src/**/*"],
  "exclude": ["node_modules", "**/*.spec.ts"]
}
  1. 大公告成! 我們建立一個 index.ts 檔案來試試看。

在其中加入 console.log('hello world')

並且在 package.json 中增加執行用的指令。

scripts: {
  // ...,
  "start": "NODE_OPTIONS='--trace-deprecation --abort-on-uncaught-exception' ts-node ./index.ts"
}
  1. 使用 npm run start 來跑看看。
$ npm run start

本週學習紀錄

程式設計原則及核心模式

A. SOLID Principles 程式設計五大原則 及其心訣

  1. Single Responsibility Principle 單一職責原則 (SRP)

Tip

A class should have just one reason to change.

  1. Open-Closed Principle 開放封閉原則 (OCP)

Tip

Classes should be open for extension but closed for modification.

  1. Liskov Substitution Principle 里氏替換原則 (LSP)

Tip

When extending a class, remember that you should be able to pass objects of the subclass in place of objects of the parent class without breaking the client code.

  1. Interface Segregation Principle 介面隔離原則 (ISP)

Tip

Clients shouldn’t be forced to depend on methods they do not use.

  1. Dependency Inversion Principle 依賴反轉原則 (DIP)

Tip

Depend upon abstractions, not concretions.

B. 五大核心設計模式

  1. 單列模式 (Singleton Pattern)
  2. 工廠模式 (Factory Pattern)
  3. 觀察者模式 (Observer Pattern)
  1. 生產者/消費者模式 (Producer-Consumer Pattern)
  2. 轉接器模式 (Adapter Pattern)

有用資源連結

  • ts-node : 因應 Typescript 在 Node.js 上運行的交互介面 github repo
  • 程式設計五大原則補充閱讀及例子 SOLID Principles in TypeScript (5 Part Series)
  • Message Queue 任務排程 (簡介:AMS, IBM)
    • RabbitMQ - One broker to queue them all (LINK)
    • Bull - a Node library that implements a fast and robust queue system based on redis, one of its main feature is: Minimal CPU usage due to a polling-free design. (LINK)
    • Celery - written in Python, an open source asynchronous task queue or job queue which is based on distributed message passing, it supports scheduling, and focus on operations in real time. (簡介, 技術閱讀)

About

Week #004

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published