Singleton DB Connection 예제를 가지고 자동 속성을 사용하여 데이타 캡슐화를 해보자.
public class SingletonConnection
{
private volatile static SingletonConnection uniqueInstance;
private static object syncRoot = new Object();
//캡슐화 할 멤버 변수를 선언
private static string strConnectionString;
private SqlConnection sqlConnection;
#endregion
//속성을 구현
public static string ConnectionString
{
get { return strConnectionString; }
set { strConnectionString = value; }
}
public SqlConnection SqlConnection
{
get { return sqlConnection; }
}
private SingletonConnection()
{
//Class 안에서만 Set을 할 수 있다
sqlConnection = new SqlConnection(strConnectionString);
}
public static SingletonConnection GetInstance()
{
if (uniqueInstance == null)
{
lock (syncRoot)
{
if (uniqueInstance == null)
{
uniqueInstance = new SingletonConnection();
}
}
}
return uniqueInstance;
}
#endregion
}
public class SinglitonDBConnection
{
private volatile static SinglitonDBConnection uniqueInstance;
private static object syncRoot = new Object();
//자동 속성을 사용해서 변경
public static string StrConnectionString { get; set; }
//Class 안에서만 변경할 수 있도록 private로 추가
public SqlConnection SqlConnection { get; private set; }
private SinglitonDBConnection()
{
SqlConnection = new OleDbConnection(StrConnectionString);
}
public static SinglitonDBConnection GetInstance()
{
if (uniqueInstance == null)
{
lock (syncRoot)
{
if (uniqueInstance == null)
{
uniqueInstance = new SinglitonDBConnection();
}
}
}
return uniqueInstance;
}
}