Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- class Program
- {
- static void Main(string[] args)
- {
- var elf = new Hero(new ElfFactory());
- Console.WriteLine("Эльф передвигается");
- elf.Run();
- Console.WriteLine("Эльф дерется");
- elf.Hit();
- var voin = new Hero(new VoinFactory());
- Console.WriteLine("Воин двигается");
- voin.Run();
- Console.WriteLine("Воин дерется");
- voin.Hit();
- Console.ReadLine();
- }
- }
- abstract class Weapon
- {
- public abstract void Hit();
- }
- abstract class Movement
- {
- public abstract void Move();
- }
- class Arbalet: Weapon
- {
- public override void Hit()
- {
- Console.WriteLine("Стрьба из арбалета");
- }
- }
- class Sword: Weapon
- {
- public override void Hit()
- {
- Console.WriteLine("Удара мечом");
- }
- }
- class FlyMovement: Movement
- {
- public override void Move()
- {
- Console.WriteLine("Полет");
- }
- }
- class RunMovement: Movement
- {
- public override void Move()
- {
- Console.WriteLine("Бег");
- }
- }
- abstract class HeroFactory
- {
- abstract public Weapon CreateWeapon();
- abstract public Movement CreateMovement();
- }
- class ElfFactory: HeroFactory
- {
- public override Weapon CreateWeapon()
- {
- return new Arbalet();
- }
- public override Movement CreateMovement()
- {
- return new FlyMovement();
- }
- }
- class VoinFactory: HeroFactory
- {
- public override Weapon CreateWeapon()
- {
- return new Sword();
- }
- public override Movement CreateMovement()
- {
- return new RunMovement();
- }
- }
- class Hero
- {
- private Weapon weapon;
- private Movement movement;
- public Hero(HeroFactory factory)
- {
- weapon = factory.CreateWeapon();
- movement = factory.CreateMovement();
- }
- public void Run()
- {
- movement.Move();
- }
- public void Hit()
- {
- weapon.Hit();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement