Comment
Comment by tigershark
Are you seriously saying that the best code is an untestable mess of big God classes?
Because in my experience this is by far the type of code written by inexperienced programmers.
Abstractions and interfaces are the best way to make a system testable and extensible and it has nothing to do with using a pattern just because you read about it in the gof book 5 minutes ago.
And using public fields in a non trivial project is a sure receipt for disaster.