2014-04-04 4 views
0

몇 가지 프로그램을 만들었지 만 대부분은 '스파게티'접근 방식을 기반으로합니다. 모든 기능이 함께 제공되며 새 기능을 추가하려면 코어 파일에 추가해야합니다.플러그인 가능한 응용 프로그램을 만드는 방법은 무엇입니까?

알림 : 디자인과 로직을 분리하는 것에 대해 묻지는 않습니다.

언어는 PHP입니다.

내가 대해 질문하고 다른 사용자 (플러그인, 구성 요소 또는 확장)를 확장하는 응용 프로그램을 허용하여 콘텐츠 관리 시스템에서 사용되는 방법은 (그리고 그것들을 달성하는 방법) 어떤

그것을 그냥 있습니다됩니다 디자인 패턴의 문제? 아니면 파일 구조? 또는 무엇을?

당신이 당신의 소프트웨어 아키텍처의 플러그인 동작에 대한 위치에 대한 결정을 내릴 수있는 모든의
+1

이것이 어떤 언어인지 알면 좋습니다 ... – computerfreaker

+0

실제 질문이 무엇인지 명확하지 않습니다. 코딩 과정에서 코드 모듈성을 재사용하고 재사용하는 방법이나 디자인 패턴 등으로 작업하는 방법에 대한 조언을 광범위하게 묻는 것처럼 보입니다. 불행히도, 나는 이것이 여기에 다루는 주제가 너무 광범위하다고 생각한다. –

+0

"주의 사항 : 디자인과 로직을 분리하는 것에 대해 묻지 않습니다." 너는 그 때 무엇을 묻고 있는가? – mpm

답변

3

첫째. 그런 다음 이러한 플러그인에 대한 인터페이스를 정의해야합니다. 그 후에 플러그인 등록을위한 인터페이스를 만들어야합니다.

Interceptor Pattern은 응용 프로그램의 어느 위치 에나 등록 된 플러그인을 실행하기위한 친구입니다.

큐에서 실행중인 플러그인의 우선 순위를 정하는 전략을 정의해야합니다. 전략은 FIFO (FirstInFirstOut)이거나 사용자가 정의한 순서를 허용 할 수 있습니다.

또한 실행중인 시스템을 보장하기 위해 모든 플러그인에서 발생하는 오류 및 예외를 처리하는 전략을 정의해야합니다.

이것은 대략적인 개념 만 나타내지 만 플러그인 가능 응용 프로그램의 핵심 요소를 포함합니다.

PHP에서 쉽게 액세스 할 수있는 좋은 예가 ZendFramework1 일 수 있습니다. dispatch process in FrontController에 간단한 플러그인 브로커를 사용하고 있습니다. 그것이 잘 작동하는 방법은 here이고 좋은 그림은 here입니다. 하지만 더 나은 접근 방식이 존재한다는 것을 알아야합니다. 애스펙트 지향 프로그래밍 (AOP). PHP의 AOP는 이벤트 구동 프로그래밍 (EDP)으로 연결하거나 AOP-PHP과 같은 외부 패키지를 사용하여 연결할 수 있습니다.

+1

좋은 접근 방식과 예제에 대한 몇 가지 진입 점을 추가했습니다. – Mamuz