До этого не вникал в эту тему серъезно, сейчас напротив, решил заполнить этот пробел. Посоветовали книжку http://www.ozon.ru/context/detail/id/31079082/ по паттернам проектирования, книга неплоха в плане подачи материала - самое оно для новичка, ну так вот там все примеры на джаве, а я решил переписать все примеры на питон, ради спортивного интереса. Вобщем там первая задачка по уткам, используя паттерн СТРАТЕГИЯ, авторы разрабатывают этакий уточный симулятор. Лучше приведу код и спрошу конкретнее:
public interface QuackBehavior { public void quack(); } public class Quack implements QuackBehavior { public void quack() { System.out.println("Quacking Duck!"); } } public class Squeak implements QuackBehavior { public void quack() { System.out.println("Squeaking Duck!"); } } public class Duck { QuackBehavior quackBehavior; public void performQuack() { quackBehavior.quack(); } } public class MallardDuck extends Duck { public MallardDuck() { quackBehavior = new Quack(); } } Duck mallard = new MallardDuck(); mallard.performQuack();
Для краткости здесь привел только одну утку с крякающим св-вом, а вот что у меня получилось на питоне:
class QuackBehavior: def quack(): pass class Quack(QuackBehavior): def quack(self): print("Quacking Duck!") class Squeak(QuackBehavior): def quack(self): print("Squeaking Duck!") class Duck: def performQuack(self): self.quackBehavior.quack() class MallardDuck(Duck): def __init__(self): self.quackBehavior = Quack() mallard = MallardDuck() mallard.performQuack()