C#/실습으로 다지는 C#

[016] 의존(Dependency) 관계 실습

언제나휴일 2020. 4. 9. 21:47
반응형

의존 관계 실습 클래스 다이어그램

소스 코드

Item.cs

namespace 의존_관계
{
    public class Item
    {
        string text;
        public string Text
        {
            get
            {
                return text;
            }
            set
            {
                text = value;
                BindingSystem.ChangedValue(this);
            }
        }
        public Item(string text)
        {
            this.text = text;
        }
        public override string ToString()
        {
            return text;
        }

    }
}

ItemControl.cs

using System;

namespace 의존_관계
{
    public class ItemControl
    {
        bool isshow;
        public Item Item
        {
            get;
            set;
        }
        public string Text
        {
            get
            {
                return Item.Text;
            }
        }
        public ItemControl(Item item)
        {
            Item = item;
            isshow = false;
            BindingSystem.ValueChangedEventHandler += BindingSystem_ValueChangedEventHandler;            //이벤트 핸들러 등록
        }

        private void BindingSystem_ValueChangedEventHandler(object sender, ValueChangedEventArgs e)
        {            
            if((e.Item == Item)&&isshow)
            {
                Show();
            }
        }

        public void Show()
        {
            isshow = true;
            Console.WriteLine(Text);
        }
    }
}

ValueChangedEventArgs.cs

using System;

namespace 의존_관계
{
    public delegate void ValueChangedEventHandler(object sender, ValueChangedEventArgs e);
    public class ValueChangedEventArgs : EventArgs
    {
        public Item Item
        {
            get;
            private set;
        }
        public string Text
        {
            get
            {
                return Item.Text;
            }
        }
        public ValueChangedEventArgs(Item item)
        {
            Item = item;
        }
    }
}

BindingSystem.cs

namespace 의존_관계
{
    public static class BindingSystem
    {
        public static event ValueChangedEventHandler ValueChangedEventHandler = null;
        public static void ChangedValue(Item item)
        {
            if(ValueChangedEventHandler != null)
            {
                ValueChangedEventArgs e = new ValueChangedEventArgs(item);
                ValueChangedEventHandler(null, e);
            }
        }
    }
}

Program.cs

//http://ehpub.co.kr
//실습으로 다지는 C#
//의존 관계 실습

namespace 의존_관계
{
    class Program
    {
        static void Main(string[] args)
        {
            Item item = new Item("언제나 휴일");
            ItemControl ic = new ItemControl(item);
            ic.Show();
            item.Text = "행복";
            item.Text = "Hello";
        }
    }
}

실행 결과

언제나 휴일
행복
Hello

 


 

 

[실습으로 다지는 C#] 16. 의존(Dependency) 관계 실습 – Part1 – 언제나 휴일

 이번 강의는 의존(Dependency) 관계 실습(Part 1 – 설계까지)입니다.  의존 관계는 원본 개체의 상태가 바뀌면 의존 개체의 상태도 바뀌는 형식 사이의 관계입니다. 그리고 팩토리 형식과 상품 형식 사이의 관계도 의존 관계로 표현합니다. 즉, 특정 형식 개체 생성을 책임지는 형식이 팩토리이고 팩토리에서 만들어지는 형식 개체가 상품 개체입니다.  이번 실습에서는 Item 형식과 이를 화면에 노출하는 ItemControl 형식간의 관계를 표현할

ehpub.co.kr

 

 

[실습으로 다지는 C#] 17. 의존(Dependency) 관계 실습 – Part2 – 언제나 휴일

 이번 강의에서는 의존 관계 실습입니다. (Part2 –  이전 강의에서 설계한 내용을 C# 코드로 작성) 여기에서는 ValueChangedEventArgs와 ValueChangedEventHandler를 먼저 작성할게요. 그리고 BindingSystem, Item, ItemControl 형식, Program 진입점 코드 순으로 진행할게요. ValueChangedEventArgs는 Item의 Text값이 바뀔 때 이를 ItemControl에서 처리하기 위

ehpub.co.kr

 

반응형