Datgs' Blog

Quyết chiến quyết thắng !

Archive for the tag “OOP”

Singleton design pattern


Singleton là một design pattern khá là sơ đẳng. Kiểu lập trình này trong OOP cho phép khởi tạo đối tượng một lần (ví dụ như tạo kết nối với CSDL chẳng hạn, bạn chỉ cần mở kết nối một lần và thực hiện rất nhiều truy vấn trên cùng kết nối đó. Chứ không cần cứ mối truy vấn lại kết nối lại một lần.

Trong C#, Singleton được cài đặt như  sau

class Singleton

{

/* biến static instance, tạo instance một lần ở đây, những lần sau sẽ sử dụng lại*/

private static Singleton instance;

private static int numOfReference;

private string code;


private Singleton()

{

numOfReference = 0;

code = “Maasoom Faraz”;

}


public static Singleton GetInstance()

{

/* rất đơn giản, nếu instance đã tồn tại thì trả về , ngược lại một instance mới sẽ được tạo ra và trả về */


if(instance == null)

{

instance = new Singleton();

}

numOfReference++;

return instance;

}


public static int Reference
{

get { return numOfReference; }

}

public string Code
{

get { return code; }

set { code = value;}

}

}

Java Generics


Example generic class:

public class Pair<T, S>
{
/* construct*/
  public Pair(T f, S s)
  {
    first = f;
    second = s;
  }
 
/*set / get*/
  public T getFirst()
  {
    return first;
  }

  public S getSecond()
  {
    return second;
  }

  public String toString()
  {
    return "(" + first.toString() + ", " + second.toString() + ")";
  }

  private T first;
  private S second;
 /*định nghĩa phương thưcs twice*/
  public <T> Pair<T,T> twice(T value)
  {
     return new Pair<T,T>(value,value);
  }

}

Use:

Pair<String, String> grade440 = new Pair<String, String>("mike", "A");
Pair<String, Integer> marks440 = new Pair<String, Integer>("mike", 100);
System.out.println("grade:" + grade440.toString());
System.out.println("marks:" + marks440.toString());
Uses twice:
Pair<String, String> pair = twice("Hello");

Observed Pattern Design


public class Parent
{    
     public String Name { getset; }
     public void OnChildCry(Child c){
        Console.WriteLine(this.Name + ” heard “ + c.Name + ” cry”);
    }
}

public class Child
{
    public Child()
    {
        Parents = new List<Parent>();
    }
    public String Name { getset; }
    public List<Parent> Parents { getset; }

     public void Cry()
   {
        foreach(Parent p in Parents)
            p.OnChildCry(this);
    }
}

 class Program
{
    static void Main(string[] args)
    {
        Parent Ralph = new Parent { Name = “Ralph” };
        Child Billy = new Child { Name = “Billy” };
        Parent Mary = new Parent { Name = “Mary” };
         Billy.Parents.Add(Ralph);
        Billy.Parents.Add(Mary);
         Billy.Cry();
         Console.Read();
    }
}

Post Navigation

Follow

Get every new post delivered to your Inbox.

Join 363 other followers