Well, almost ALL 'design patterns' have a strong tie to C++. You should rather assume they have NOTHING to do with 'proper design' and 'best practices' and EVERYTHING to do with bizarre C++ foibles and carefully consider the real need for any of them instead of mindlessly complicating your code. Especially since many of the design patterns are bandaids to fix problems created by yet other design patterns. This applies ten times more so when using any language than C++, because C++ has a huge number of problems no other language does.
For example, singleton is the most obvious example of this. The real reason for this is the way that C++ has very poorly implemented static initialization. Without this, you actually have to know what you are doing to make initialization work properly, and most people really don't. For most uses the extra overhead of singleton is fine, but it should be kept in mind that it does have overhead, and it has no use in most languages. It also creates extra problems of in every single implementation I have seen.
Same applies to the bridge pattern, I can see using singletons, but there's simply no reason to ever use bridge pattern. It comes down to 'do you know what you are doing?'. If so, you don't need bridge pattern. If not, you should probably learn more before trying to solve the issue prompting you to use bridge pattern. Most importantly, it is not really useful at all in languages besides C++. The point of it is to separate implementation and interface, which in more modern OO languages is done already because they have proper modules of some kind. In C++, it is better to use pure virtual interfaces for cases like this (and don't think this has worse performance, it has much better performance than bridge pattern combined with templates).
But that is the problem with design patterns; it's not a methodology at all, just a bunch of random things. Random things most of the people advocating them don't really understand, most of which properly have no place being called anything with the word design in them. They are not design tools, but specific solutions to various problems. Many of which are avoidable.
Ironically, java API is full of bridges and a wide variety of other design patterns which are totally pointless in Java. Java API is easy to use most of the time, but the overcomplicated heirarchy can be very cumbersome to work with.