Tôi đang xem xét một số mã (Java) và thực hiện các thay đổi dựa trên biểu đồ luồng logic kinh doanh. Mã hiện tại dựa vào một số lượng lớn của câu lệnh if - điều mà tôi muốn thử và chuyển đi. Tôi đã đọc về Đa hình và đang cố gắng quấn quanh đầu tôi để áp dụng nó vào tình huống của tôi. Tôi có thể làm cho nó hoạt động cho một mức điều kiện duy nhất, nhưng phải vật lộn để mở rộng hơn nữa qua nhiều cấp độ có điều kiện. Mã sẽ được thực thi vào thời gian chạy, với phương thức 'Logic' này được chuyển qua các biến từ bước trước đó.Tránh làm tổ nếu khác/công tắc - Java
Ví dụ bị truy tố: Chúng tôi có 2 Sở thú, 'Sở thú A' và 'Sở thú B' và 'Trang chủ'. Mỗi trong số này là một 'Place'. Trong mỗi Sở thú, chúng tôi có 4 'địa điểm', 'Bắc', 'Nam', 'Đông' và 'Tây'. 'Trang chủ' chỉ có một vị trí. Chúng tôi muốn chỉ định 'điểm đến' cho một người ở nơi họ nên đi dựa trên một vài biến. Các biến này là: 'Địa điểm', tương ứng với địa điểm của chúng tôi (Sở thú A, Sở thú B, Nhà riêng). 'Hướng', tương quan với các vị trí của chúng tôi, (N, S, E, W). luồng Chart:
|----- | 'HOME'
|Place?| ----- > *destination = 'home'*
|----- |
Zoo A | Zoo B
|---------------|----------------------------------------|
|----------| |----------|
|Direction?| |Direction?|
|----------| |----------|
| North | North
----------- *destination = 'Zoo A North' ----------- *destination = 'Zoo B North'
| East | East
----------- *destination = 'Zoo A East' ----------- *destination = 'Zoo B East'
| South | South
----------- *destination = 'Zoo A South' ----------- *destination = 'Zoo B South'
| West | West
----------- *destination = 'Zoo A West' ----------- *destination = 'Zoo B West'
Vì vậy, Nếu Person X có Nơi Zoo A và Hướng Nam họ cần phải có một Điểm đến của 'Zoo Một Nam'
tôi có mã đó là hiện khá xấu xí sử dụng Nếu tuyên bố:
if(Place = 'HOME')
destination = 'HOME'
if(Place = 'Zoo A')
if(Direction = North)
destination = 'Zoo A North')
if(Direct = East)
destination = 'Zoo A East')
...
if(Place = 'Zoo B')
if(Direction = North)
destination = 'Zoo B North')
if(Direct = East)
destination = 'Zoo B East')
...
Tôi có thể biến điều này thành các công tắc lồng nhau với các biến là ENUM. Nhưng tôi đang cố gắng tránh sự phụ thuộc if - else/switch khi tôi có thói quen xấu rơi vào đó. Tôi đã thử nghiệm bằng cách sử dụng Thiết kế Nhà máy để tạo các lớp Địa điểm, sau đó sử dụng Đa hình trên mỗi vị trí và điểm đến nhưng nó bắt đầu trở nên quá phức tạp trong đầu của tôi. Nó thậm chí có giá trị di chuyển ra khỏi nếu/chuyển mạch? Tôi chỉ đang cố gắng hơn để thiết kế nó?
Bất kỳ đề xuất nào về cách xử lý luồng logic như thế này? Cảm ơn
Tôi không hoàn toàn rõ ràng về những gì bạn đang cố gắng làm trong ví dụ của bạn. Chuỗi "Địa điểm" và "Hướng" hay một số loại đối tượng khác? Dù bằng cách nào, một ví dụ đơn giản có thể là tạo các phương thức 'goNorth()', vv trong lớp 'Zoo' của bạn. Tôi không hoàn toàn chắc chắn rằng điều này sẽ giải quyết vấn đề của bạn, tuy nhiên, bởi vì tôi không hoàn toàn rõ ràng về những gì bạn đang cố gắng làm. –
@ Code-Guru - Giả sử chúng là tất cả các chuỗi để đơn giản. Những gì tôi đang cố gắng làm là bắt đầu ở trên cùng của dòng chảy và dựa trên các biến (hướng và địa điểm) kết thúc với một 'đích' cuối cùng. Nhưng trong cách quản lý dễ dàng nhất và dễ bảo trì – NathanS