In a previous post I stated that "when you want to write a singleton, drink a single malt instead". I also mentioned the "Golden Hammer" pattern which leads to poor design and low maintainability. The bottom line of it is : code design is not made of simple recipes you can use for every need. It is all about analysis and thinking. And it's something you can (well, must) apply every day.
Application development is a world of rules. Unless you lived in a cave the last twenty years, you're aware of design patterns, SOLID principles, test-driven development and some other best practices, you may even apply (please: not the singleton). The principle of least astonishment is not one of them in the first place, it was mostly established as a rule of thumb for user interfaces. But if we think about it, it's a rule we can apply on software design and architecture.