Wzorzec fasada - poprawna implementacja

0

Cześć. Zainteresowałem się wzorcem fasada. Mam taki kod:

   interface IHelloAble
    {
        string SayHello(string who);
    }

    class FirstClass
    {
        public string name { get; set; }
        public bool SomeMethod(int number)
        {
            return number > 18 ? true : false;
        }
        public void Greeting(string text)
        {
            Console.WriteLine("Greeting {0}!", text);
        }
    }

    class SecodClass
    {
        public string petname { get; set; }
        public void GreetingPet(string text)
        {
            Console.WriteLine("Hello {0}, my lovely pet!", text);
        }
    }

    class Facade : IHelloAble
    {
        private FirstClass _firstObj;
        private SecodClass _secondObj;

        public Facade()
        {
            _firstObj = new FirstClass();
            _secondObj = new SecodClass();
        }

        public void SomeAction(string name)
        {
            _firstObj.name = name;
            string hello = SayHello(_firstObj.name);
            _firstObj.Greeting(hello);

            _secondObj.petname = name;
            hello = SayHello(_secondObj.petname);
            _secondObj.GreetingPet(hello);
            
        }


        /** Interface implementation **/
        public string SayHello(string name)
        {
            return string.Format(name.ToUpper());
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            Facade facade = new Facade();
            facade.SomeAction("Johny");

            Console.ReadLine();
        }
    }
 

Teraz pytanie: czy jest to poprawnie zaimplementowane (zgodnie z regułą wzorca)? Jeśli nie to proszę o wskazówki, oraz: czy implementacja interfejsu nie powinna być w tym przypadku "private"?

0

Generalnie to co zrobiłeś, to rzeczywiście jest fasada: korzystasz w mainie nie bezpośrednio z FirstClass i SecondClass, ale właśnie poprzez fasadę, czyli taką nadbudówkę na te klasy. Natomiast interfejs IHelloable jest tutaj do niczego niepotrzebny (przecież nigdzie z niego nie korzystasz).
Interfejs służy do pokazania, jak z daną klasą komunikować się z zewnątrz - więc prywatna implementacja interfejsu nie ma żadnego sensu i nie jest możliwa.

1 użytkowników online, w tym zalogowanych: 0, gości: 1