내가 약 10 웹 서비스 호출을 호출하고 난 하나의 프록시를해야합니다 내가가장 좋은 방법은
class WebserviceCalls {
public static function getReportDetails($reportId) {}
public static function getUserSession($userId) {}
....................................
}
그런 다음 같은 클래스에있는 모든 전화를 넣어 한 단일 정적 클래스를 만든 WebServiceCallProxy
은 실제 호출이 WebServiceCalls
클래스로 전달되기 전에 모든 캐싱을 처리합니다.
이 디자인에서는 새로운 웹 서비스 호출이 필요한 새로운 요구 사항이 생겼으므로 새 호출을 WebServiceCalls
클래스에 추가하기 만하면됩니다.
모든 디자인으로, 그리고 그것이 커짐에 따라, 코드 냄새를 요구하고, 모든 OOP 솔리드 원칙을 위반하며, 클래스도 응집력이 없습니다. 더 좋은 방법이 있어야한다는 것을 알고 있습니다. 미리 정의 된 디자인 패턴을 사용하여 이러한 종류의 문제를 처리하거나 간단한 객체의 각 메소드를 분해하고 전체 WebServiceClass를 다른 컴포넌트로 처리 할 수 있습니다.
의미가 있지만 사용자 모델이 이미 있고 getSession을 데이터 소스 (속성 또는 인수)로 웹 서비스로 추가하는 반면 사용자 모델의 다른 메서드에 대한 데이터 소스는 데이터베이스라고하면 어떻게 구성할까요? ? –
'WebService'와'Database'를 서비스로 처리하십시오. 응용 프로그램 수명주기에 한 번만 존재해야합니다. 싱글 톤 패턴을 사용하여 인스턴스를 만들 수 있습니다. 'WebService :: getInstance() -> request (params)'를 호출하고 DB 쿼리를 위해'Database :: getInstance() -> query (query)'를 사용하는'User' 모델'getSession'에서 서비스 인스턴스를 가져 오는 'ServiceManager'. –
MVC에는 "모델"이 없습니다. 모델은 계층입니다. 당신이 이해하지 못하는 사람의 패턴을 제안하는 것을 중단하십시오. 또한, 이것은 OP의 문제로 어떤 식 으로든 도움이되지 않습니다. 그리고 위에 벚꽃처럼 : ** 싱글렛은 반 패턴입니다 ** ** –