Найти - Пользователи
Полная версия: Хорош ли пример паттерна Adapter?
Начало » Python для новичков » Хорош ли пример паттерна Adapter?
1
zlodiak
Помогите пожалуйста понять хорошо ли я следующим кодом иллюстрировал паттерн Adapter.

Я попытался через Adapter объединить два интерфейса, которые отличаются:
1. названием
2. форматом возвращаемого значения

Мне кажется, это как раз те два пункта, в работе с которыми может помочь описываемый паттерн. не забыл ли я что-нибудь важное? Можно ли пример улучшить и приспособить для более сложной задачи, которая решается в рамках этого adapter?

 #!/usr/bin/env python3
 
import random
 
class RandomNum:
  def getNum(self):
    return random.random()
 
class RandomObj:
  def getObj(self):
    return {'num': random.random()}
 
class Adapter:
  def __init__(self, adaptee):
    self.adaptee = adaptee
 
  def getNum(self):
    return self.adaptee.getObj()['num']
 
n = RandomNum()
o = Adapter(RandomObj())
 
print(n.getNum())
print(o.getNum())

LIVE DEMO
FishHook
zlodiak
для более сложной задачи
усложнить можно было бы, например, так:
Во-первых, пусть методы не только возвращают разные типы значений, но и аргументы у них пусть будут разные.
Во-вторых, ин риал лайф редко окогда можно обойтись без райза исключений. Пусть ваши объекты выкидывают экцепшены (разные!!!), а еще будет круче, если один райзит, а другой возвращает значение-ошибку.
В-третьих, инициализацию тоже можно сделать по-сложнее. Пускай один из классов создает объекты статическим методом.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB