 <p>i think Template method pattern better suits here. 1. create Hotel interface 2. create 3 Hotel classes(implements Hotel interface) LakeWood,Rosewood and xyzWood</p> <ol> <li><p>now create customer class and it will have series of dates also.</p> <p>here both Customer class and Hotel class both are independent.</p></li> <li><p>now create an interface say LogicInterface which will have a method and this method will be passed customer and List hotels as parameter, and will be returning cheapest hotel. now we will create class implementing LogicInterface.cheap hotel finding logic will be in this class here "Template method pattern" will be used,because later on and cheapest hotel finding logic is changed,we will create new class which will be implementing LogicInterface and just one line change will finish our work,no where any code change will be needed.</p></li> </ol>