using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace WzorzecDekorator
{
    public class KomponentDekoratora : IKomponent
    {
        public KomponentDekoratora(IKomponent udekorowanyKomponent)
        {
            this.udekorowanyKomponent = udekorowanyKomponent;
        }

        public string Właściwość
        {
            get
            {
                // Po odczytaniu właściwości można ją modyfikować za pomocą dodatkowych instrukcji.
                return udekorowanyKomponent.Właściwość;
            }
            set
            {
                // Podobnie tutaj przed zapisaniem wartości.
                udekorowanyKomponent.Właściwość = value;
            }
        }

        public event EventHandler Zdarzenie
        {
            add
            {
                // Po instrukcji rejestrującej zdarzenie można wpisać dodatkowy kod.
                udekorowanyKomponent.Zdarzenie += value;
            }
            remove 
            {
                // Podobnie tutaj, po wyrejestrowaniu zdarzenia.
                udekorowanyKomponent.Zdarzenie -= value;
            }
        }

        private readonly IKomponent udekorowanyKomponent;
    }
}
