2013-08-26 2 views
-2

Я пытаюсь создать метод, называемый удобствами:рубин композиция/дизайн затруднительное

Защиту signin_screen

конец

которая должна иметь два компонента.

  1. Все общие методы из signin_screen
  2. Конкретных методов deviceScreen от либо Android/Ios (которая будет определен во время выполнения на основе в переменной ENV)

SignInScreen бы такие методы, как

def emailfield 
end 
def passwordfield 
end 

Но они могут иметь общие методы и некоторые конкретные методы.

Теперь AndroidScreen и IosScreen являются подклассами DeviceScreen. Что такое хороший дизайн для SignInScreen, должен ли он быть классом под каждым из них или модулем?

Пожалуйста, не добавляйте акцент на Android/Иос/Экраны и т.д. Они, а также может быть лицо Студент факультета/сотрудники, которые все должны иметь общий класс Authentication

Better explanation with pen and paper

ответ

0

Я не» У меня есть опыт в вашей конкретной теме, поэтому мой ответ основан на общих идеях.

На мой взгляд, SignInScreen служит контроллером, который готовит контент для показа, в то время как AndroidScreen и IosScreen должны быть не чем иным, чем шаблонами. Они получают контент от контроллера и показывают его на определенном устройстве.

По этой конструкции, SignInScreen (или лучшее название без экрана, поскольку он является контроллером или действия контроллера) не лучше ничего общего с DeviceScreen или его суб-классами, и его лучшим родителем ApplicationController

Связанных чтения : http://en.wikipedia.org/wiki/Template_method_pattern

+0

Извините, если я заблуждаюсь «экраном» выше, это может быть студент или сотрудник. Я не хочу создавать контроллер. – satyajit