PROGRAMING/C#

자동 속성을 이용한 데이타 캡슐화

파란실버라이트 2012. 11. 21. 15:17

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;

        }


    }