Tôi có một số lớp khác nhau đến từ các nguồn bên ngoài (không thể sửa đổi) đại diện cho cùng một khái niệm. Ví dụ: Address
. Tôi có com.namespace1.Address
(với các lĩnh vực houseNum
, street
, city
), com.namespace2.Address
(với các lĩnh vực h
, s
, c
), namespace3.com.CoolAddress
(với các lĩnh vực house_num
, street
, city
).Mẫu chuyển đổi đối tượng
Sự cố là một số dịch vụ web nhất định mà tôi sử dụng yêu cầu một số loại đối tượng Địa chỉ nhất định, vì vậy tôi bắt buộc phải tạo một số com.namespace1.Address
cho một số namespace3.com.CoolAddress
. Các trường này đủ dễ dàng để lập bản đồ nhưng tôi đang tìm kiếm một mẫu về cách thực hiện.
Từ quan điểm của tôi, đối tượng thể hiện AddressConverter
không có ý nghĩa vì không có trạng thái (chỉ hành vi) và khi các lớp chỉ có hành vi, nó sẽ chuyển thành các phương thức tĩnh trong lớp tiện ích. Về lâu dài, bất cứ khi nào tôi cần ánh xạ các đối tượng mới với nhau, tôi có một nơi để thêm/sửa đổi/xóa các phương thức. Làm thế nào nó được thực hiện có thể thay đổi, nhưng tôi biết nơi mã ngồi (ở một nơi) và có thể thay đổi ánh xạ khi tôi cần.
Suy nghĩ?
+1 cho đề xuất bảng xử lý - Tôi sử dụng mẫu đó khá một chút. Nhưng sử dụng 'Bản đồ' thay vì' Hashtable'. :) –
Nhà máy là một mô hình sáng tạo. Câu hỏi đặt ra là quản lý các đối tượng hiện có thay vì tạo các đối tượng mới. – SomeWittyUsername
@icepack Tôi nghĩ rằng OP không muốn tạo ra các cá thể mới khi ánh xạ một đối tượng này đến đối tượng khác. Tôi nghĩ với câu "một vài đối tượng khác nhau đến từ các nguồn bên ngoài (không thể sửa đổi được)", có nghĩa là các lớp của các đối tượng không thể sửa đổi được. Tôi căn cứ vào câu sau: "Tôi bắt buộc phải ** tạo ** một com.namespace1.Address cho một namespace3.com.CoolAddress.". Tôi sẽ chỉnh sửa câu. –