2008-10-10 27 views
5

Tôi có một lớp nhà máy để điền vào các đối tượng có dữ liệu. Tôi muốn thực hiện tiết kiệm từ các đối tượng, nhưng không muốn cư các đối tượng với công cụ db - là nó ngu ngốc để có Nhà máy của tôi mà tạo ra các lớp học cũng lưu dữ liệu?Lớp Nhà máy - Lưu đối tượng

ví dụ: trong phương thức .Save() của tôi trên đối tượng tôi sẽ gọi Factory.Save (myObject);

Trả lời

3

Nếu bạn quan tâm về công cụ cơ sở dữ liệu trong các lớp học - bạn đã cân nhắc sử dụng trình lập bản đồ O/R chưa?

Điều này sẽ giữ cho nội dung cơ sở dữ liệu hoàn toàn nằm ngoài mã của bạn và đối tượng miền của bạn sạch sẽ.

Có thể xem NHibernate hoặc Active Record.

2

Không, nó không ngu ngốc chút nào, trên thực tế, đó là cách mọi người nên làm điều đó. Đối tượng kinh doanh không được chứa bất kỳ logic kiên trì nào.

Btw, nếu bạn đang sử dụng C# 3.0, thì bạn thậm chí có thể không bận tâm với lớp Nhà máy. Chỉ cần tạo các phương thức mở rộng. Bằng cách đó bạn vẫn có thể có mã kiên trì của bạn được phân lập từ đối tượng kinh doanh và vẫn có thể gọi myObject.Save().

+0

Bạn đã nhận được phiếu bầu cho dòng đầu tiên một mình .... Tôi đã cố gắng thuyết phục mọi người về điều đó trong một thời gian dài. – ckramer

+0

Chỉ cần không gọi nó là một nhà máy sau đó - bạn sẽ bắt đầu khó hiểu những người biết những gì một nhà máy là. – jop

6

Lớp nhà máy là mẫu tạo hình giúp tạo đối tượng mới.

Có mô hình khác nhau mà đối phó với các đối tượng kiên trì, một trong số đó là dữ liệu mapper http://martinfowler.com/eaaCatalog/dataMapper.html

này thường được sử dụng trong conjection với Repository http://martinfowler.com/eaaCatalog/repository.html

Bạn có thể sử dụng các mô hình để trừu tượng cơ sở dữ liệu đi từ các đối tượng miền/doanh nghiệp của bạn và truy cập chúng từ bên trong ứng dụng của bạn để truy vấn và lưu các đối tượng.

Vì vậy, trình lập bản đồ/kho lưu trữ dữ liệu chịu trách nhiệm cho cả hai khía cạnh của sự kiên trì (điền từ cơ sở dữ liệu và lưu lại vào cơ sở dữ liệu).

Các vấn đề liên quan