Skip to content

Instantly share code, notes, and snippets.

@cch12313
Created October 17, 2021 04:37
Show Gist options
  • Save cch12313/e787393b815003c025fa4bb132e7b457 to your computer and use it in GitHub Desktop.
Save cch12313/e787393b815003c025fa4bb132e7b457 to your computer and use it in GitHub Desktop.
Strategy Pattern
using System;
namespace design_pattern
{
class Program
{
static void Main(string[] args)
{
Toyote car1 = new Toyote();
Bens car2 = new Bens();
Tezla car3 = new Tezla();
Blanket car4 = new Blanket();
Chair car5 = new Chair();
Gororo car6 = new Gororo();
car1.Skill();
car2.Skill();
car3.Skill();
car4.Skill();
car5.Skill();
car6.Skill();
}
}
public class Toyote
{
private ISkill _skill;
public Toyote()
{
_skill = new Turbo();
}
public void Skill()
{
_skill.Cast();
}
}
public class Bens
{
private ISkill _skill;
public Bens()
{
_skill = new Turbo();
}
public void Skill()
{
_skill.Cast();
}
}
public class Tezla
{
private ISkill _skill;
public Tezla()
{
_skill = new ElectromagneticPulseBoost();
}
public void Skill()
{
_skill.Cast();
}
}
public class Blanket
{
private ISkill _skill;
public Blanket()
{
_skill = new Hidden();
}
public void Skill()
{
_skill.Cast();
}
}
public class Chair
{
private ISkill _skill;
public Chair()
{
_skill = new Rush();
}
public void Skill()
{
_skill.Cast();
}
}
public class Gororo
{
private ISkill _skill;
public Gororo()
{
_skill = new ThrowBananaPeel();
}
public void Skill()
{
_skill.Cast();
}
}
public interface ISkill
{
public void Cast();
}
public class Turbo: ISkill
{
public void Cast()
{
Console.WriteLine("噴射加速~");
}
}
public class ElectromagneticPulseBoost: ISkill
{
public void Cast()
{
Console.WriteLine("電磁脈衝加速~");
}
}
public class Hidden : ISkill
{
public void Cast()
{
Console.WriteLine("隱形~");
}
}
public class Rush : ISkill
{
public void Cast()
{
Console.WriteLine("衝撞~");
}
}
public class ThrowBananaPeel : ISkill
{
public void Cast()
{
Console.WriteLine("丟香蕉皮~");
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment