코드 깔끔 한 길 - 대상 과 데이터 구조
class Square{
public $side;
}
class Geometry{
public function area($shape){
if($shape instanceof Square){
return $shape->side * $shape->side;
}
return 0;
}
}
누군가가 보 았 습 니 다. 당신 의 추상 적 인 문제 가 있 군요. 분명히 과정 을 향 한 것 입 니 다. 만약 에 하나의 유형 을 추가 하면 Geometry 류 의 모든 방법 을 수정 해 야 합 니 다.응, 그 랬 어. 그런데 반대로 방법 을 새로 추가 하면 기 존의 모양 류 는 움 직 이지 않 고 Geometry 류 에 방법 만 추가 하면 돼.
물론 다 중 실현 방식 도 있다.
class Square implements Shape{
private $side;
public function area(){
return $this->side * $this->side;
}
}
너 는 이렇게 하면 만사 가 다 잘 될 것 이 라 고 생각 하 니?아 닙 니 다.확실히 이렇게 이 루어 지고 새로운 유형 을 추가 하 며 새 신발 의 한 가지 실현 방법 만 있 으 면 된다. 간단 하 다.그러나 새로운 함 수 를 추가 하려 면 모든 종 류 를 수정 해 야 합 니 다.
간단하게 요약 하면 다음 과 같다.
물론 어떤 것 을 구체 적 으로 사용 할 지 는 유연 하 게 선택해 야 하 며 구 애 받 지 않 아 도 된다.
새로운 행 위 를 유연 하 게 추가 하려 면 데이터 구 조 를 사용 하 라.새로운 유형 을 유연 하 게 추가 하려 면 대상 을 대상 으로 하 는 방식 을 사용한다.
다음으로 전송:https://www.cnblogs.com/hujingnb/p/11568721.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.