Các Design Patterns trong lập trình hướng đối tượng

(Bài viết này được viết dựa trên kinh nghiệm thực tế + tham khảo “Gang of Four”)
Trong lập trình hướng đối tượng nói chung, các design pattern được phân chia làm 3 loại:
– Creational patterns
– Structural patterns
– Behaviour patterns

1. Creational patterns: Gồm Simple Factory, Factory Method, Abstract Factory, Builder, Prototype, SingleTon/MultiTon
a. Simple Factory: Một factory chung sẽ làm nhiệm vụ phân phối các đối tượng theo yêu cầu
– Interface IVerhicle
– Car, Truck: IVerhicle
– IVerhicle VerhicleFactory.Get(CarType)
b. Factory Method: Việc phân phối các đối tượng được thực hiện thông qua các factory chuyên biệt
– Interface Iverhicle, IVerhicleFactory{Get();}
– Car, Truck: Iverhicle
– CarFactory, TruckFactory: IVerhicleFactory
– Car = CarFactory.Get(), Iverhicle TruckFactory.Get()
c. Abstract Factory: Tương tự như Factory Method trong việc phân phối các đối tượng. Tuy nhiên, trong quá trình phân phối có sự che dấu cách thức cung cấp đối tượng.
– Interface Iverhicle, IVerhicleFactory{Get();}
– Car, Truck: Iverhicle
– CarFactory, TruckFactory: IVerhicleFactory
Factory factory = new CarFactory()
Car = factory.Get()
Factory factory = new TruckFactory()
Truck = factory.Get()
Xét về bản chất thì tại thời điểm tạo đối tượng factory, bản thân đối tượng chính là một thể hiện của một factory cụ thể (ví dụ CarFactory, TruckFactory). Vì vậy có thể coi pattern này là một implementation của Factory Method, điểm khác chính là ở cách thức lấy đối tượng ra mà thôi.

d. Builder: Tương tự như Abstract Factory về cách thức implement, điểm khác biệt cơ bản giữa hai pattern này là ở cách thức xây dựng lên đối tượng trước khi phân phối: Abstract Factory thường áp dụng cho những đối tượng có tính available/imediately cao, trong khi Builder áp dụng cho những đối tượng mà việc xây dựng chúng trải qua nhiều công đoạn, cần phải “build”.
e. Prototype: Việc khởi tạo các đối tượng dựa trên clone từ một đối tượng mẫu (prototype)
f. SingleTon/Multiton: Singleton: Một thể hiện của đối tượng được tạo ra một lần duy nhất và được truy cập đồng nhất từ mọi điểm. Multiton: Mở rộng của Singleton, cho phép truy cập thể hiện qua key, với mỗi key chỉ có một đối tượng duy nhất.

(còn tiếp)

Advertisements

About Trung Ninh

A man on the road to become a millionaire
This entry was posted in .NET, Java, Programming tips and tagged , , . Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s