미처 완성되지 못한 알고리즘

어댑터 패턴의 간단한 예들 본문

IT/디자인 패턴

어댑터 패턴의 간단한 예들

-June- 2017. 9. 29. 18:15

어댑터 패턴: 기존에 쓰던 메소드나 클래스를 새로운 클래스에 매핑을 해준다.


기능 변경과 추가했을 때 어댑터 패턴을 사용하여 유지보수가 가능하다.




ex)


    class Target

    {

        public virtual void Request() { Console.WriteLine("Target Request Method"); }

    }


    class Adaptee

    {

        public void SpecificRequest() { Console.WriteLine("Adaptee SpecificRequest Method"); }

    }


    class Adapter : Target

    {

        private Adaptee m_adaptee = new Adaptee();

        public override void Request()

        {

            m_adaptee.SpecificRequest();

        }

    }

    class Program

    {

        static void Main(string[] args)

        {

            Target target = new Target();

            target.Request();

        }//main

    }



///////////////////////////////////////////////////////////////////////////////////////////////////////////////////



    class NewUnit

    {

        public virtual void Attack()

        {

            Console.WriteLine("New Unit Attack");

        }


        public virtual void Move()

        {

            Console.WriteLine("New Unit Moved");

        }

    }


    class OldUnit

    {

        public void AttackUnit()

        {

            Console.WriteLine("Old Unit Attack");

        }


        public void MoveUnit()

        {

            Console.WriteLine("Old Unit Moved");

        }

    }


    class Unit : NewUnit

    {

        private OldUnit m_adaptee = new OldUnit();

        public override void Attack()

        {

            m_adaptee.AttackUnit();

        }

        public override void Move()

        {

            m_adaptee.MoveUnit();

        }

    }


    class Program

    {

        static void Main(string[] args)

        {

            List<NewUnit> listUnit = new List<NewUnit>();

            listUnit.Add(new NewUnit());

            listUnit.Add(new Unit());


            for(int i = 0; i < listUnit.Count ;i++)

            {

                listUnit[i].Move();

                listUnit[i].Attack();

        }//main

    }

'IT > 디자인 패턴' 카테고리의 다른 글

command 패턴의 간단한 예들  (0) 2017.10.02
옵저버 패턴의 간단한 예들  (0) 2017.09.29
팩토리 메소드 패턴 간단한 예  (0) 2017.09.28
간단한 싱글톤 예제들  (0) 2017.09.25