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"?