Created
October 17, 2021 04:37
-
-
Save cch12313/e787393b815003c025fa4bb132e7b457 to your computer and use it in GitHub Desktop.
Strategy Pattern
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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