Попробуйте добавить косую черту - <script src="/target/app.js"></script>
Все проблемы могут быть решены путем добавления уровня абстракции. Я использовал бы Ваш предложенный вариант и отделил бы Местоположение от Стороны, позволив getNext принимать объект, который разрешает направленный выбор. Вот (непротестированный) пример:
class Location;
class IDirectionChooser
{
public:
virtual bool ShouldIGoThisWay(Location & way) = 0;
};
class Location
{
public:
virtual Location * GetNext(IDirectionChooser & chooser)
{
return nextLocation;
}
virtual Describe();
private:
Location * nextLocation;
};
class Fork : public Location
{
public:
virtual Location * GetNext(IDirectionChooser & chooser)
{
for (int i = 0; i < locations.size(); i++)
if (chooser.ShouldIGoThisWay(*locations[i]))
return locations[i];
}
virtual Describe();
private:
vector<Location *> locations;
};
class Party : public IDirectionChooser
{
public:
void Move()
{
currentLocation = currentLocation->GetNext(GetDirectionChooser());
}
virtual IDirectionChooser & GetDirectionChooser() { return *this; }
virtual bool ShouldIGoThisWay(Location & way)
{
way.Describe();
cout << "Do you want to go that way? y/n" << endl;
char ans;
cin >> ans;
return ans == 'y';
}
};
Необходимо использовать полиморфизм, пока он имеет смысл и упрощает дизайн. Вы не должны использовать его просто, потому что это существует и имеет необычное имя. Если это действительно делает Ваш дизайн более простым, то это стоит связи.
Правильность и простота должны быть конечной целью каждого проектного решения.
Я думаю, что Вы определили проблемы сами и можете, вероятно, разработать его с Вашим знанием остальной части системы или еще нескольких деталей здесь, чтобы мы посмотрели на.
Как был упомянут:
Полиморфизм не предоставляет большей связи, я думаю, что они - отдельные вопросы.
На самом деле, если Вы будете программировать к интерфейсам и следовать за общей инверсией шаблонов управления затем, то Вы приведете к меньше или нулевая связь.
В Вас пример я не вижу, как местоположение связано с UserInterface?
Если это верно, связь может быть удалена через другой уровень абстракции промежуточный UserInterface и Местоположение, такое как LocationViewAdapter?