Инструменты пользователя

Инструменты сайта


pattern_strategy

Назад

Паттерн Стратегия определяет семейство алгоритмов, инкапсулирует каждый из них и обеспечивает их взаимозаменяемость. Он позволяет модифицировать алгоритмы независимо от их использования на стороне клиента.

Для Реализации разных вариантов поведения используется паттерн Стратегия.

Unit
abstract public class Unit
{
    IWeapon weapon;
    IArmor armor;
    abstract void Display(); 
    abstract void performWeapon(); 
    abstract void performArmor(); 
}
 
class Archer extends Unit
{
    Archer()
    {
        weapon = new Bow();
        armor = new Average();
    }
    void Display()
    {
        System.out.println("Это лучник");
    }
 
    void performArmor()
    {
        armor.init();
    }
 
    void performWeapon()
    {
        weapon.init();
    }   
}
 
class Warrior extends Unit
{
    Warrior()
    {
        weapon = new Sword();
        armor = new Severe();
    }
    void Display()
    {
        System.out.println("Это воин");
    }
 
    void performWeapon()
    {
        weapon.init();
    }
 
    void performArmor()
    {
       armor.init();
    }    
}
 
class Wizard extends Unit
{
    Wizard()
    {
        weapon = new Staff();
        armor = new light();
    }
 
    void Display()
    {
        System.out.println("Это волшебник"); 
    }
 
    void performWeapon()
    {
        weapon.init();
    }
 
    void performArmor()
    {
         armor.init();
    }  
}
Armor
public interface IArmor
{
    void init();
}
 
class Average implements IArmor
{
    public void init()
    {
        System.out.println("Cредняя броня");
    }
}
 
class Severe implements IArmor
{
    public void init()
    {
        System.out.println("Тяжелая броня");
    }
}
 
class light implements IArmor
{
    public void init()
    {
       System.out.println("Легкая броня");
    }
}
Weapon
public interface IWeapon
{
   void init(); 
}
 
class Staff implements IWeapon
{
 
    public void init()
    {
        System.out.println("Стафф");
    }
 
}
 
class Sword implements IWeapon
{
    public void init()
    {
        System.out.println("Меч");
    }
 
}
 
class Bow implements IWeapon
{
    public void init()
    {
        System.out.println("Лук");
    } 
}
Main
public class Main
{
    public static void main(String[] args)
    {
        Archer a = new Archer();
        a.Display();
        a.performArmor();
        a.performWeapon();
    }     
}