Tôi sẽ coi đó là một mùi kiến trúc trong UpdateData có lẽ nên thuộc về một lớp 'dịch vụ'.
Trường hợp dữ liệu là một Apple. Trong đó AppleAd CHƯƠNG là lớp dịch vụ / kinh doanh thông minh. Trong đó AppleService là một tham chiếu Singleton đến AppleAd CHƯƠNG tồn tại bên ngoài phương thức hiện tại.
private static volatile AppleAdapter _appleService = null;
private static object _appleServiceLock = new object();
private AppleAdapter AppleService
{
get
{
if (_appleService == null)
{
lock (_appleServiceLock)
{
if (_appleService == null)
_appleService = new AppleAdapter();
}
}
return _appleService;
}
}
public SomeAppleRelatedMethod(Apple apple)
{
AppleService.UpdateData(apple);
}
Tôi không nghĩ những gì bạn đang làm là sai nhất thiết nhưng nếu một sốDataAd CHƯƠNG thực sự đại diện cho một loại dịch vụ kinh doanh phi trạng thái nào đó, thì một singleton sẽ là cách thực hành tốt nhất cho nó. Mong rằng sẽ giúp! Ví dụ được cung cấp là cách thức lạ mắt để đảm bảo không có sự tranh chấp của _appleService nếu nó xảy ra là cả null và được truy cập cùng một lúc bởi hai hoặc nhiều luồng.
Bạn biết gì? Nếu someDataAd CHƯƠNG là một IDbDataAd CHƯƠNG của ADO (mà gần như chắc chắn là vậy), hãy bỏ qua toàn bộ phản hồi này!
: P
Tôi không có quyền thêm nhận xét cho câu hỏi ban đầu, nhưng nếu bạn có thể chỉ định nơi mã này tồn tại.
Nếu mã này đại diện cho việc triển khai tùy chỉnh IDbDataAd CHƯƠNG và UpdateData đang tạo IDbConnection, IDbCommand và kết nối nó ở phía sau hậu trường, thì tôi sẽ không nghĩ rằng đó là mùi mã vì bây giờ chúng ta đang nói về luồng và khác những thứ cần được xử lý khi chúng ta sử dụng chúng xong.