Abstract(抽象類別)與Interface(介面)的差異

  • 96
  • 0
  • C#
  • 2024-07-10

Abstract與Interface的使用時機差異!!

抽象概念先想一下,下列情境題:

我們在玩卡牌遊戲(遊戲王),陷阱卡、魔法卡、怪獸卡都繼承了Card這類別,但我們能然可以new Card()來建立一張新的卡牌,那這張卡牌屬於甚麼類型的卡牌….是不是覺得怪怪的!!

貓與狗都為動物,貓與狗都繼承了Animal類別,但直接new Animal(),這樣這實體動物算哪一種動物!?

我與正在看這篇文章的你皆為工程師,我跟你都繼承的工程師這類別,但我們可以直接new 工程師(),這類別嗎!?

...繼續閱讀 »

AOP過濾器與攔截器的差異

  • 86
  • 0
  • C#
  • 2024-07-10

AOP Filter與Interceptor

無意間接觸了Interceptor,但想想Interceptor做的事不是跟Filter一樣嗎!!!! 但其實是有差異的,就來記錄一下差異!!

AOP(Aspect-Oriented Programming),中文有很多翻譯(特性、切面、橫面)導向程式設計,是一種新的方法論,它是對傳統OOP程式設計的一種補充。OOP是關注將需求功能劃分為不同且相對獨立,封裝成良好的類別,並讓它們有屬於自己的行為模式,依靠繼承和多型等來定義彼此的關係。AOP是希望能夠將通用需求功能從不相關的類別當中分離出來,能夠使得很多類別共享一個行為,一旦發生變化,不必修改很多類別,而只需要修改這個行為即可。AOP是使用切面(Aspect)將橫面關注點模組化,OOP是使用類將狀態和行為模組化。

...繼續閱讀 »

TCP與UDP差異

TCP與UDP差異

有時候會被問到TCP與UDP的差異,突然要教人的時候會不太知道該怎麼說,想說就打一篇文章,讓自己邏輯更清晰。

TCP與UDP都屬於OSI模型第四層(傳輸層)。

...繼續閱讀 »

Redis優缺點

Redis優缺點

Redis本身是一個in memory的key-value資料庫,可用於分散式架構,提供資料快取,可以大大提升訪問伺服器的速度和吞吐量。

Redis主從模式(master-slave),一個master可以擁有多個slave,client寫入資料至master,而master也會同步資料至slave,當client讀取資料則透過slave讀取,slave可以分擔讀取的流量,並而緩解高流量的問題,此架構也易slave的水平擴展。

於主從機制中,當master有異常時,會於slave中票選機制產生一個新的master,從而保證服務的高可用性。

...繼續閱讀 »

Design Pattern - Template模板模式

Template模板模式:

抽象父類別:定義了一個模板方法和抽象方法,該模板方法定義了框架及一系列流程。

子類別:透過繼承抽象父類別實作各個抽象方法,且不可改變流程。

優點:符合OCP開放封閉原則,新增功能,應要新增程式碼而不是修改既有程式碼來擴充系統,且也減少程式碼重複性以便於維護。

缺點:流程於抽象父類別中,而各個流程的實作邏輯於子類別中,程式碼較不易閱讀。

...繼續閱讀 »

Design Pattern - Observer觀察者模式

Observer觀察者模式:

定義對象之間的一對多依賴關係,當一個對象更改狀態時,會自動通知其所有依賴的對象,也就是一個發佈者可以向多個事件的訂閱者發送訊息。

當多個 Class 都需要接收同一種資料的變化時,就適合使用 Observer Pattern。

上述「多個 Class 」指的就是「觀察者」,而「同一種資料」指的就是觀察者們想了解的「主題」,因此Observer Pattern實作的原理是將資料抽離出來,當資料改變時,同步發送給所有的觀察者。

...繼續閱讀 »

Design Pattern - Decorator裝飾者模式

Decorator裝飾者模式:

裝飾者模式通常用來動態的添加物件的前後新功能或行為,不需要時也方便移除該功能,而不需要修改原始類別的程式碼,允許你將功能封裝於獨立的類別中,組合這些裝飾者而實現功能。

透過裝飾者模式也符合開放封閉原則,對擴充是開放的,對修改是封閉的。

 

...繼續閱讀 »

TwoSum

  • 89
  • 0
  • C#
  • 2024-07-10

演算法LeetCode TwoSun

Given an array of integers, return indices of the two numbers such that they add up to a specific target.

You may assume that each input would have exactly one solution, and you may not use the same element twice.

...繼續閱讀 »