1    // ============================================================================
2    //   Copyright 2006, 2007, 2008 Daniel W. Dyer
3    //
4    //   Licensed under the Apache License, Version 2.0 (the "License");
5    //   you may not use this file except in compliance with the License.
6    //   You may obtain a copy of the License at
7    //
8    //       http://www.apache.org/licenses/LICENSE-2.0
9    //
10   //   Unless required by applicable law or agreed to in writing, software
11   //   distributed under the License is distributed on an "AS IS" BASIS,
12   //   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   //   See the License for the specific language governing permissions and
14   //   limitations under the License.
15   // ============================================================================
16   package org.uncommons.watchmaker.examples.travellingsalesman;
17   
18   import java.util.List;
19   
20   /**
21    * Strategy interface for providing distances between cities in the
22    * Travelling Salesman problem.
23    * @author Daniel Dyer
24    */
25   public interface DistanceLookup
26   {
27       /**
28        * @return The list of cities that this object knows about.
29        */
30       List<String> getKnownCities();
31   
32       /**
33        * Looks-up the distance between two cities.
34        * @param startingCity The city to start from.
35        * @param destinationCity The city to end in.
36        * @return The distance (in kilometres) between the two cities.
37        */
38       int getDistance(String startingCity, String destinationCity);
39   }
40