답변:
당신은 어떤 종류의 논리를 공유하고 있는지 말하지 않았습니다. 요컨대,이 컨트롤러 논리 또는 도우미 기능입니까? 객체 지향 언어에서 이것을 처리하는 두 가지 방법은 상속과 구성입니다. 두 제어기간에 공유 조치가있는 경우 상속이 의미가 있습니다. 구성은 나머지 시간에 의미가 있습니다. 상속을 사용하는 예는 분배기 아래의 원래 답변에 있습니다.
프레임 워크에 따라 유틸리티 클래스 나 도우미 클래스를 갖는 것은 드문 일이 아닙니다. 예를 들어, Java 및 C # 웹 프레임 워크에서 유틸리티 용 패키지 / 네임 스페이스가있을 수 있습니다. Ruby on Rails에서는 Helper
컨트롤러와 뷰 사이의 논리를 공유 하는 클래스를 활용할 수 있습니다 . 기본적으로 다음과 같습니다.
// NOTE: group similar functions
static class LoginUtility
{
static bool IsLoggedIn(Request request) { /* ... */ }
}
또는 인스턴스화하는 클래스로 만들 수 있습니다. 위 정적 클래스 패턴의 핵심은 함수를 순수한 함수로 만드는 것입니다. 즉, 작업을 수행해야하는 상태를 전달하고 함수는 시스템의 다른 정적 상태를 참조하지 않습니다.
두 경우 모두 다음과 같이 각 컨트롤러에서 액세스 할 수 있습니다.
void MyAction()
{
if (LoginUtiltiy.IsLoggedIn(Request))
{
// Do something ...
}
}
원래 답변
귀하의 플랫폼이 무엇인지 말하지 않았습니다. 답변에 영향을 줄 수 있습니다. 가정 은 객체 지향 언어이다, 가장 일반적인 방법은 두 컨트롤러 확장하는 기본 클래스를 만드는 것입니다. 예를 들어 Ruby on Rails에는 다음이있을 수 있습니다.
class BaseController < ApplicationController
def my_special_function
# ...
end
end
class Controller1 < BaseController
# ...
end
class Controller2 < BaseController
# ...
end
아이디어를 다른 언어로도 번역 할 수 있습니다. ASP.NET MVC, Apache Wicket, Grails 또는 다른 객체 지향 웹 프레임 워크에서도 동일한 접근 방식이 적용됩니다. 언어가 객체 지향적이 아닌 경우 실제로는 프레임 워크가 최상의 접근 방식 으로 설계되는 방식에 따라 다릅니다 .