2015-06-30 2 views
1

У меня есть эти два объекта # C, который имеет некоторые свойства подвергаютсяСоответствующие правила изменяется во время выполнения

class A{ 
prop1,prop2, prop3, producttype 
} 

class B{ 
prop10, prop11, prop12, prop13, productype 
} 

В зависимости от типа продукта, во время выполнения, алгоритм сопоставления изменится. Пример ,

if (A.productType =="ABC") 
    then match this logic, A.prop1 == B.prop10 && A.prop3 == B.prop12 

if (A.productType=="DEF") 
    then match this logic A.pro1 == B.prop11 

//and many more 

Как написать такую ​​логику чисто и многоразовые? Есть ли какой-либо дизайн, который я могу использовать?

+0

Какова связь между утверждениями? Если у вас нет отношения, которое может помочь вам построить алгоритм для использования, возможно, делегатов или дженериков, тогда вы также можете сами написать заявления. Просто спросите, что такое алгоритм соответствия, о котором вы говорите. – Hozikimaru

+0

Алгоритм сопоставления зависит от типа продукта, поэтому, когда тип продукта «ABC», вы идете и приравниваете эти свойства, если «DEF» соответствует другим свойствам и т. Д. Я хочу написать это чисто и будущую проверку для других типов продуктов в будущем. – user1322437

ответ

0

Взгляните на Strategy Pattern. Вы не сможете обойти некоторые блоки if/else, чтобы выбрать правильную стратегию, хотя вы не можете абстрагировать правила, по которым вы выбираете стратегию.

+0

Хотя эта ссылка может ответить на вопрос, лучше включить здесь основные части ответа и предоставить ссылку для справки. Ответные ссылки могут стать недействительными, если связанная страница изменится. – Hrqls

+1

@Hrqls Это законный ответ, возможно, даже хороший (я не знаком со многими шаблонами проектирования и не могу точно проголосовать здесь). Это ответ на вопрос напрямую, а также дает ссылку для дальнейшего чтения. – ryanyuyu