2013-03-17 6 views
0

На моем сайте у меня есть функции, которые я хочу включить: & отключить пользователя. Я создал класс, который реализует эту логику в производительном способе, поэтому он загружает все функции с одним запросом и т.д. немного упростило это выглядит следующим образом:Что это за дизайн?

class FeatureAdapter 
    attr_accessor :controller 

    delegates :current_user, to: :controller 

    def initialize(controller) 
    self.controller = controller 
    end 

    def enabled?(name) 
    # logic here 
    end 

    private 
    def feature(name) 
    features.find { |f| f.name == name } 
    end 

    def features 
    @_features ||= Feature.all 
    end 
end 

Что такое название этого шаблона? Я бы сказал, это адаптер, но я не уверен в этом.

+0

Возможно, это фасад? – iGEL

+2

Это не похоже на какой-либо узор для меня. Это не шаблон адаптера, потому что вы не переводите между интерфейсами (и насколько мы можем сказать, вы вызываете этот класс напрямую). Я не решаюсь называть его Фасадом, потому что он тоже ничего не скрывает. – Dai

+0

@ Дай откликнулся, и я приму это. :) – iGEL

ответ

0

Что вы делаете, называется коммутатором функций, переключателем функций или переключателем функций. Мартин Фаулер очень хорошо документировал его here.

Существует дискуссия о том, как это сделать в рельсах here, и есть на самом деле драгоценные камни, делающие это как удивительно названное feature flipper.

0

Я не знаю, действительно ли это образец. В немецком языке я бы назвал это Customizing

Не-IT английский эквивалент будет Mass_customization

Personalization может быть частным случаем.