Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

ความแตกต่าง Static Class และ Singleton ใน C#

Static Class

  • Keyword: static class
  • มีได้แค่ Static Members เท่านั้น
  • เก็บใน Stack (Static Memory)
  • **ไม่สามารถ** Implement Interface, Inherit Class, Pass as Parameter
  • ไม่มี Constructor, ไม่มี Instance
  • ไม่สามารถ Dispose ได้

Singleton

  • Design Pattern (Creational)
  • เป็น Object Instance เดียว (Normal Class)
  • เก็บใน Heap
  • **สามารถ** Implement Interface, Inherit Base Class, Pass as Reference
  • มี Private Constructor
  • รองรับ Disposal (IDisposable)
  • สามารถ Clone ได้ (ถ้า Implement ICloneable)
  • สอดคล้อง OOP Principles

Comparison Table

AspectStatic ClassSingleton
TypeLanguage FeatureDesign Pattern
InheritanceNoYes (Base Class)
InterfacesNoYes
ParametersNoYes (Pass by Ref)
MemoryStatic/StackHeap
LifetimeApp DomainControlled (Lazy/Eager)
TestabilityHard (Mocking)Easier (Interface)
DisposalNoYes (IDisposable)

เมื่อไหร่ใช้ไหน?

  • Static Class: Utility Functions, Extension Methods, Pure Functions, Constants
  • Singleton: Shared State, Resource Management (DB Connection, Cache), Service Pattern, ต้องการ Polymorphism