Ну, почти ВСЕ «шаблоны проектирования» имеют сильную связь с C ++. Скорее, вы должны предположить, что они НИЧЕГО не имеют отношения к «правильному дизайну» и «лучшим практикам», а ВСЕ - к причудливым слабостям C ++ и тщательно обдумать реальную необходимость любого из них вместо того, чтобы бездумно усложнять ваш код. Тем более, что многие из шаблонов проектирования - это бинты, чтобы исправить проблемы, создаваемые другими шаблонами проектирования. Это применимо в десять раз больше, чем при использовании любого языка, кроме C ++, поскольку в C ++ существует огромное количество проблем, которых нет в других языках.
Например, синглтон является наиболее очевидным примером этого. Настоящей причиной этого является то, что в C ++ очень плохо реализована статическая инициализация. Без этого вам действительно нужно знать, что вы делаете, чтобы правильно выполнить инициализацию, а большинство людей действительно этого не делают. Для большинства применений дополнительные издержки синглтона - это хорошо, но следует иметь в виду, что они имеют накладные расходы и не используются в большинстве языков. Это также создает дополнительные проблемы в каждой реализации, которую я видел.
То же самое относится к шаблону моста, я могу видеть использование синглетонов, но просто нет причин когда-либо использовать шаблон моста. Все сводится к тому, что «ты знаешь, что делаешь?». Если это так, вам не нужен шаблон моста. Если нет, вам, вероятно, следует узнать больше, прежде чем пытаться решить проблему, побуждающую вас использовать шаблон моста. Самое главное, что это не очень полезно для языков, кроме C ++. Смысл этого в том, чтобы отделить реализацию и интерфейс, что в более современных языках ОО уже сделано, потому что у них есть собственные модули определенного типа. В C ++ лучше использовать чистые виртуальные интерфейсы для подобных случаев (и не думайте, что это имеет худшую производительность, она имеет гораздо лучшую производительность, чем шаблон моста в сочетании с шаблонами).
Но это проблема шаблонов проектирования; это вовсе не методология, просто куча случайных вещей. Случайные вещи, которые большинство людей, защищающих их, на самом деле не понимают, большинство из которых должным образом не имеют никакого места, называемого чем-либо со словом «дизайн». Это не инструменты проектирования, а конкретные решения различных проблем. Многие из которых можно избежать.
По иронии судьбы, Java-API полон мостов и множества других шаблонов проектирования, которые абсолютно бессмысленны в Java. Java API прост в использовании в большинстве случаев, но слишком сложная иерархия может быть очень громоздкой для работы.