Utility Pattern

Intent: For a utility class, which does not require instantiation and only has static methods, use a private constructor. The compiler can then enforce that no instances are created.


http://publib.boulder.ibm.com/infocenter/rtnlhelp/v6r0m0/index.jsp?topic=/com.ibm.r2a.archdisc.doc/topics/rdesignpatterns.html

http://today.java.net/pub/a/today/2006/11/28/PrivateConstructorsSQ15.html?page=last&x-maxdepth=0

http://www.cenqua.com/forums/thread.jspa?threadID=1187&tstart=0


Using all static methods in a utility class supports and enforces the class to have no state. Stateless objects are more efficient and easier to debug and test.[1][2] All utility classes are stateless. Good candidates for utility classes are where there is a grouping of ConvenienceMethods.


[1] http://www.scottishdevelopers.com/modules/newbb/viewtopic.php?viewmode=flat&order=ASC&topic_id=792&forum=4300&move=prev&topic_time=1142942463

[2] http://info.borland.com/techpubs/delphi/delphi5/dg/mts.html


I wouldn't call this a pattern so much as a workaround for the deficiencies of languages (such as JavaLanguage) that don't have proper namespaces. Except in such languages, there is no reason to make a class that will never be instantiated, and so this should generally be considered an AntiPattern. (In RubyLanguage, for example, you'd use a module instead of a class for this purpose. In CeePlusPlus, I think you'd be better off using a namespace, but my C++ is rusty enough that I hesitate to say for sure.) --MarnenLaibowKoser

Your C++ isn't rusty.


CategoryPattern CategoryCreationalPatterns

EditText of this page (last edited February 9, 2011) or FindPage with title or text search