C#マルチステートの実装
11312 ワード
マルチステート:異なるオブジェクトが同じメッセージを受信すると、異なる動作が発生し、同じクラスが異なる場合に異なる動作特徴マルチステートの役割を果たすことを指す:異なるサブクラスオブジェクトを親として見ると、異なるサブクラスオブジェクト間の違いを遮断し、共通のコードを書き、共通のプログラミングを行い、需要の絶えず変化に適応することができる.マルチステートの実装には、次の3つの形式があります.ダミーメソッド 抽象クラス インタフェース 以下,ダミーメソッドを用いて,単純にマルチステート効果を実現する.
抽象クラスを使用したマルチステート注意:抽象メソッドにはエンティティがなく、継承中、override、すなわちoverrideを複写する必要があります.
//
class Program
{
static void Main(string[] args)
{
Employee employee = new Employee();
employee.DaKa();
Employee mannger = new Mannger();
mannger.DaKa();
Employee programer = new Programer();
programer.DaKa();
//
Employee[] employees = { employee, mannger, programer };
for (int i = 0; i < employees.Length; i++)
{
employees[i].DaKa();
}
Console.ReadKey();
}
}
// :
class Employee
{
public virtual void DaKa()
{
Console.WriteLine(" ");
}
}
// ①:
class Mannger : Employee
{
public override void DaKa()
{
Console.WriteLine(" ");
}
}
// ②:
class Programer : Employee
{
public override void DaKa()
{
Console.WriteLine(" ");
}
}
抽象クラスを使用したマルチステート注意:抽象メソッドにはエンティティがなく、継承中、override、すなわちoverrideを複写する必要があります.
//
class Program
{
static void Main(string[] args)
{
Animal animal = new Dog();
animal.Bark();
Animal Cat = new Cat();
Cat.Bark();
Console.ReadKey();
}
}
//
abstract class Animal
{
public abstract void Bark();
}
// ①:
class Dog : Animal
{
public override void Bark()
{
Console.WriteLine(" ");
}
}
// ②:
class Cat : Animal
{
public override void Bark()
{
Console.WriteLine(" ");
}
}