CSC/ECE 517 Fall 2011/ch4 4h lp: Difference between revisions

From Expertiza_Wiki
Jump to navigation Jump to search
(Replaced content with "This page has been moved to [http://expertiza.csc.ncsu.edu/wiki/index.php/CSC/ECE_517_Fall_2011/ch4_4h_kp http://expertiza.csc.ncsu.edu/wiki/index.php/CSC/ECE_517_Fall_2011/c...")
 
(10 intermediate revisions by the same user not shown)
Line 1: Line 1:
==Introduction==
This page has been moved to [http://expertiza.csc.ncsu.edu/wiki/index.php/CSC/ECE_517_Fall_2011/ch4_4h_kp http://expertiza.csc.ncsu.edu/wiki/index.php/CSC/ECE_517_Fall_2011/ch4_4h_kp]
This wiki article discusses about some of the commonly used & easy to understand Desgin patterns[http://en.wikipedia.org/wiki/Design_pattern_(computer_science)] in the software industry. Specifically, we will be studying about the Singleton, Adapter, Command & Strategy patterns.
 
==Design Pattern==
 
===Definition===
===Examples===
 
==Case Study==
===Singleton===
[http://en.wikipedia.org/wiki/Singleton_pattern Singleton] is a design pattern which imposes a restriction on the class to instantiate exactly one object of that class.
 
====Implementation===
*In Java, We can create a thread-safe & lazy version of Singleton as follows.
<nowiki>
public class Singleton {
        private static Singleton _instance;
        private Singleton() {  }
        public static synchronized Singleton getInstance() {
                if (null == _instance) {
                        _instance = new Singleton();
                }
                return _instance;
        }
}
</nowiki>
 
====When should we use Singleton ? <ref>[http://stackoverflow.com/questions/228164/on-design-patterns-when-to-use-the-singleton When should we use Singleton ?]</ref> ====
There is a lot of criticism to the use of singleton pattern. So, how do we decide whether an object should be singleton or not ?
For an object to be considered as a singleton object, they must satisfy three requirements:
#controls concurrent access to a shared resource.
#access to the resource will be requested from multiple, disparate parts of the system.
#there can be only one object.  
 
====Applications====
====Advantages====
*Singletons are often preferred to global variables as they don't pollute the global [http://en.wikipedia.org/wiki/Namespace namespace] with unnecessary variables & also can be instantiated only when needed unlike global variables which always consume resources.
 
====Drawbacks====
*Introduces a global state into the application.
*Can make unit testing classes in isolation difficult.
Checkout the [http://www.youtube.com/watch?v=-FRm3VPhseI this] video from Misko Hevery which explains in detail when the usage of singletons is not exercised.<ref>[http://www.youtube.com/watch?v=-FRm3VPhseI Why Singletons are bad]</ref>
 
===Adapter===
 
===Command===
 
===Strategy===
 
==Conclusion==
 
==References==
<references/>
 
==External Links==

Latest revision as of 04:54, 21 October 2011