Dependency Inversion Principle (DIP)

Module(1) ที่อยู่ระดับสูง จะไม่ขึ้นอยู่กับ Module ที่อยู่ระดับต่ำ ทั้งคู่ จะขึ้นอยู่กับ abstraction(2)

Abstraction จะไม่ขึ้นกับ Detail(3) แต่ Detail จะขึ้นอยู่กับ Abstraction

— DIP —

(1) Module อธิบายด้วยตัวอย่าง ถ้าโลกของ .NET ก็คือ *.dll, โลกของ JAVA ก็คือ *.jar, โลกของ Rails ก็คือ lib และ โลกของ Node.js ก็คือ node_modules

(2) Abstraction อธิบายด้วยตัวอย่าง Class เป็น abstraction ของ Instance, Interface เป็น abstraction ของ Class และ Animal เป็น abstraction ของ Dog, Cat หรือ Human

(3) Detail อธิบายด้วยตัวอย่าง Detail ของการ Sort คือ Bubble Sort, Quick Sort หรือ Shell Sort และ จากตัวอย่าง Abstraction ด้านบน detail ก็คือ Instance, Class, Dog, Cat และ Human นั่นเอง

อ่านเพิ่มเติม

– DIP in the Wild

ขอบคุณครับ

#:P 

Advertisements

#design, #design-patterns