Note that there are some explanatory texts on larger screens.

plurals
  1. POWhy do I need the Singleton design pattern?
    primarykey
    data
    text
    <p>i try to learn design pattern, but it's really really hard to understand main idea of OOD. i have created my software with classic method. On the other hand i want to learn OOD. why i need singleton and others? i coded some simple program: one of them clasical(my style), the other is singleton pattern.Please teach me why do i need singleton. my method better and clear than it :)</p> <p>my style: (C#)</p> <pre><code> public partial class Singletonsuz : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { Loadbalancer balancer = new Loadbalancer(); for (int i = 0 ; i &#60; 15 ; i++) { string server = balancer.Server; Response.Write("Dispatch Request to: " + server); } } } class Loadbalancer { private List&#60;string&#62; _servers = new List&#60;string&#62;(); private Random _random = new Random(); public Loadbalancer() { _servers.Add("ServerI"); _servers.Add("ServerII"); _servers.Add("ServerIII"); _servers.Add("ServerIV"); _servers.Add("ServerV"); } public string Server { get { int r = _random.Next(_servers.Count); return _servers[r].ToString(); } } } </code></pre> <p>SINGLETON: </p> <pre><code> public partial class SingletonDP2 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { LoadBalancer balancer = LoadBalancer.GetLoadBalancer(); for (int i = 0; i &#60; 15; i++) { string server = balancer.Server; Response.Write("Dispatch Request to: " + server ); } } class LoadBalancer { private static LoadBalancer _instance; private List&#60;string&#62; _servers = new List&#60;string&#62;(); private Random _random = new Random(); private static object syncLock = new object(); protected LoadBalancer() { _servers.Add("ServerI"); _servers.Add("ServerII"); _servers.Add("ServerIII"); _servers.Add("ServerIV"); _servers.Add("ServerV"); } public static LoadBalancer GetLoadBalancer() { if (_instance == null) { lock (syncLock) { if (_instance == null) { _instance = new LoadBalancer(); } } } return _instance; } public string Server { get { int r = _random.Next(_servers.Count); return _servers[r].ToString(); } } } } </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload