Programing

언제 구현하고 확장해야합니까?

lottogame 2020. 10. 13. 07:15
반응형

언제 구현하고 확장해야합니까?


  • 때해야 implement또는 extend사용?
  • 실제 사례는 무엇입니까?

이 올바른지?

구현 은 특정 메서드가 클래스에 존재하고 이러한 메서드 함수 호출의 형식이 적절하게 지정되도록하는 방법으로 보입니다. 구현은 변수 나 "설정"을 클래스에 전달하는 방법 아닙니다 .

예상되는 실제 시나리오 : 동일한 디자인을 따르는 여러 결제 클래스를 갖춘 전자 상거래 플랫폼이 있습니다. 새로운 지불 클래스를 추가해야 할 때 interface처음부터 모든 비트와 조각이 있는지 확인하기 위해 의 정의 된 디자인을 따르는 것이 정말 쉽습니다 .

클래스를 확장 하면 확장 (자식?) 클래스가 private?로 선언 된 메서드 및 변수를 제외하고 부모 클래스의 모든 것을 상속받습니다 .

예상되는 실제 시나리오 :sessions이라는 두 개의 하위 클래스로 호출 된 하나의 클래스가 있습니다 . 그리고 , 부모 세션에서 여러 상호 구성 옵션을 상속하여 모든 종류의 최종 방문자 데이터 스토리지에 영향을 미치는 구성 옵션을 쉽게 변경할 수 있습니다.sessioncookiesdatabasesessionssessioncookiesdatabasesessions


상속은 다시 작성하는 코드의 양을 줄이는 데 유용합니다. 몇 가지 공통 메서드 또는 필드가있는 여러 클래스가있는 경우 이러한 메서드와 필드를 반복해서 정의하는 대신 기본 클래스로 팩터링하고 각 자식 클래스가 해당 기본 클래스를 확장하도록 할 수 있습니다.

인터페이스 (및 implements)는 개체 그룹의 동작 방식에 대한 공통 프로토콜 을 정의하려는 경우 유용 합니다. 예를 들어, 비교할 수있는 객체가 동등성 및 해시 등을 위해 비교 될 수 있도록 명령 할 수 있습니다.

상속을 사용하는 것은 궁극적으로 디자인 선택입니다. 여러 클래스에서 동일한 메소드를 정의하는 경우를주의하십시오. 이러한 메서드를 기본 클래스로 분리 할 수있는 훌륭한 사례입니다. 동일한 특성 중 일부를 관찰하는 클래스도 마찬가지입니다. 이러한 특성을 관련 클래스에서 구현할 인터페이스에 배치하여 일관성을 보장 할 수 있습니다.

상속은 PHP를 넘어서는 OOP의 큰 개념입니다. 상속에 관한 위키피디아 기사Gang of Four의 디자인 패턴 을 읽어 보는 것이 좋습니다 .

나는 상속에 대한 당신의 이해가 주로 정확하다고 믿습니다. 다음 단계는 프로덕션에서 사용하는 것입니다.


도구:

인터페이스는 추상 클래스이므로 선언 만 할 수 있습니다. 구현은 인터페이스를 구현하는 것입니다! 여러 인터페이스 를 구현할 있습니다.

넓히다:

당신은 확장 이 클래스의보다 구체적인 버전을 할 때 클래스를.

예:

abstract class Animal {
    private String name;

    public void eat();
    public void sleep();
}

public interface Pet {
    public void play();
}

public class Dog extends Animal implements Pet {
    public void eat() {
        // do stuff
    }

    public void sleep() {
        // do stuff
    }

    public void play() {
        // do stuff
    }
}

public class Hippo extends Animal {
    public void eat() {
        // do stuff
    }

    public void sleep() {
        // do stuff
    }
}

Hippo와 Dog는 둘 다 동물이기 때문에 Animal을 확장합니다. 하지만 개만이 애완 동물이 될 수 있습니다!

참고 URL : https://stackoverflow.com/questions/4961906/when-to-implement-and-extend

반응형