Patterns are awesome. With great powers comes great responsibility.
TL;DR: Don't abuse patterns.
Problems
Over Design
Readability
Solutions
Measure the tradeoff of patterns usage.
Create solutions based on real world names (essential) over architecture (accidental).
Choose good names.
Sample Code
Wrong
public final class FileTreeComposite {
//name should be inferred from behaviour
}
public final class DateTimeConverterAdapterSingleton {
//
}
public final class PermutationSorterStrategy {
//
}
public final class NetworkPacketObserver {
//
}
public final class AccountsComposite {
//
}