2013-06-13 1 views
1

나는 내 수업을 설계하는 최선의 방법을 찾기 위해 노력하고 있으며 추상적 인 수업을 여기에서 바르게 생각한다고 생각하지만 잘 모르겠습니다! 현재 Wordpress Cart 용 플러그인을 만들고 있는데, Woocommerce와 WP-ecommerce 모두에서 작동 할 것입니다. 이 두 시스템은 주문 객체를 가져 오는 것과 같이 특정 기능의 구현이 다르므로 각 플랫폼에 대해 별도의 클래스를 만들고 싶습니다.PHP 디자인 - 추상 클래스 및 팩토리 메서드

나는 다음과 같이 그것을 상속 한 클래스에서 사용할 수 있어야하는 일반 메서드를 포함합니다. 이 클래스는 인스턴스화해서는 안 :

class Order_WooExport extends Order_Export { 
} 

class Order_WPExport extends Order_Export{ 
} 

내 디자인은 바로 여기에 있습니다 :

class Order_Export { 
} 

나는 그 위에서 상속이 개 더 수업을? Order_Export 클래스가 추상 클래스 여야한다고 말하는 것이 맞습니까? 클래스가 상속 받기를 원하는 메소드는 무엇입니까? 간단하게 추상 클래스에서 서명을 표시하고 본문을 제공하지 않습니까? 아니면 인터페이스가 여기 어딘가에서 작동합니까?

올바른 클래스를 인스턴스화하는 것은 어떻습니까? 둘 중 하나를 반환 할 팩토리를 생성합니까?

감사합니다. , 추상 기본 클래스를 사용하는 것이 올바른 소리

답변

1

은 당신이 확신으로 Order_Export를 인스턴스화 할 필요가 없습니다합니다 : 다음

abstract class Order_Export 
{ 
    abstract protected function someMeth1(); 
    abstract protected function someMeth2(); 

    public function someMeth3() { 
     // Do common thing to both Order_WooExport and Order_WPExport 
     // using someMeth1(), someMeth2()... 
    } 
} 

:

class Order_WooExport extends Order_Export 
{ 
    protected function someMeth1() { 
     // Do something specific 
    } 

    protected function someMeth2() { 
     // Do something specific 
    } 
} 

마지막으로, 팩토리는 것 같다 옳은 길을가는 것도.