.NET 4.x ООП, сокращение строк кода - C#
Формулировка задачи:
В программе мы выбираем режим:
1,2,3
В каждом классе используется один и тот же метод Hello, он дублируется, а вот метод Write у всех классов разный.
Вопрос: как сократить код? Чтобы Hello был один, а вызывал он разные методы Write классов.
Можно ли переопределить метод Write 1 раз, а потом его в цикле прокрутить?
class Program
{
static void Main()
{
A a = new A();
B b = new B();
C c = new C();
while (true)
{
var input = Console.ReadLine();
switch (input)
{
case "1":
a.Hello();
break;
case "2":
b.Hello();
break;
case "3":
c.Hello();
break;
case "Close":
return;
}
}
}
class A
{
public void Hello()
{
for (var i = 0; i < 3; i++)
{
Write();
}
}
private void Write()
{
Console.WriteLine("А");
}
}
class B
{
public void Hello()
{
for (var i = 0; i < 3; i++)
{
Write();
}
}
private void Write()
{
Console.WriteLine("B");
}
}
class C
{
public void Hello()
{
for (var i = 0; i < 3; i++)
{
Write();
}
}
private void Write()
{
Console.WriteLine("C");
}
}
}Решение задачи: «.NET 4.x ООП, сокращение строк кода»
textual
Листинг программы
abstract class Base
{
public void Hello()
{
for (var i = 0; i < 3; i++)
{
Write();
}
}
protected abstract void Write();
}
class A : Base { protected override void Write() { Console.WriteLine("A"); } }
class B : Base { protected override void Write() { Console.WriteLine("B"); } }
class C : Base { protected override void Write() { Console.WriteLine("C"); } }