PHP 잡담'재 구성-기 존 코드 의 디자인 개선'의 두 대상 간 이동 특성
7545 단어 잡담
색인:
Ø Move Method(이동 함수)
Ø Move Field(이동 치 역)
Ø Extract Class(추출 류)
Ø Inline Class(클래스 내 연 화 는 현재 의 클래스 를 다른 클래스 에 통합 하 는 것 이다)
Ø Hide Delegate(의뢰 관계 숨 기기)
Ø Remove Middle Man(브로커 제거)
Ø Introduce Foreign Method(추가 함수 도입)
Ø Introduce Local Extension(로 컬 확장 도입)
소개 하 다.
위의 PHP 잡담 인 의 재 구성 을 받 아 당신 의 함 수 를 재 구성 하고 재 구성 방면 의 내용 을 계속 말 합 니 다.
전문 용어
위임:의뢰
캡슐 화:패키지
도입
wrapper:덮어 쓰기
머리말
"책임 을 어디 에 두 기로 했 습 니까?"재 구성 을 활용 하여 원래 의 디자인 을 바 꾸 기로 했 습 니 다.
설명:
1.Class 는 너무 많 고 비대 하 다―Extract Class 는 일부 책임 을 분리 한다.
2.Class 는 충분 한 책임 을 지지 않 고 더 이상 존재 하 는 이유 가 없습니다.-Inline Class 는 이 를 다른 Class 에 융합 시 킵 니 다.
3.Class 는 다른 Class―Hide Delegate 를 사용 하여 관 계 를 숨 깁 니 다.
4.계승(3)클 라 이언 트 가 Middle Man 을 통 해 많은 Delegate Class 의 함수(여 기 는 간단 한 호출 일 뿐 점프 만 하고 Middle Man 은 업무 논 리 를 많이 하지 않 습 니 다.예 를 들 어 10 개의 Delegate Class 중의 Method 가 10 개의 Middle Man 에 대응 하 는 Method)―Remove Middle Man 은 Delegate Class 를 직접 사용 하여 일부 Delegate Method 를 사용 할 수 있 습 니 다.
Move Method
만약 에 한 클래스 의 방법 이 다른 클래스 와 많은 교 류 를 한다 면 우 리 는 다른 클래스 에서 비슷 한 기능 을 가 진 새로운 함 수 를 만들어 서 낡은 함 수 를 단순 한 Delegating Method 로 만 들 거나 오래된 함 수 를 제거 합 니 다.
아 날로 그:
동기:
1.한 종류 가 다른 종류 와 고도 로 결합 하면 나 는 Move Method 를 사용 할 것 이다.class 는 시스템 이 전달 하 는 임 무 를 더욱 간단 하고 깔끔하게 실현 합 니 다.
2.일부 당직 도 메 인 을 이동 하려 면 다른 유형의 횟수 를 사용 하 는 지 확인 하려 면 주 소 된 대상 을 사용 하 는 횟수 가 더 많 습 니 다.
Move Field
상황:당신 의 class 중의 field 는 다른 class 에 더 많이 사 용 됩 니 다.그러면 다른 class 에 new field 를 만 들 고 오래된 field 를 수정 합 니 다.
Extract Class
상황:한 클래스 가 두 가지 일 을 했 습 니 다.그러면 새로운 Class 를 만 들 고 관련 Field 와 Method 를 구 Class 에서 새 Class 로 옮 깁 니 다.
Inline Class
상황:당신 의 어떤 Class 는 많은 일 을 하지 않 았 습 니 다(충분 한 책임 을 지지 않 았 습 니 다).그러면 Class 의 모든 특성 을 다른 Class 로 옮 긴 다음 원 Class 를 제거 합 니 다.
동기:Inline Class 는 Extract Class 와 반대 입 니 다.Phone Number 는 code 와 number 만 읽 기 때문에 Extract Class 예 를 거꾸로 보 냅 니 다.
Hide Delegate
상황:클 라 이언 트 가 서버 Object 의 Delegate Class Method 를 직접 호출 하면 서버 에서 클 라 이언 트 에 필요 한 함수 Method 를 만들어 의뢰 관 계 를 숨 깁 니 다.
대상 기술 을 배 운 사람 은 모두 알 고 있 습 니 다.phop 은 field 를 Public 로 성명 하 는 것 을 허락 하지만 field(private)를 숨겨 야 합 니 다.경험 이 날로 풍부 해 지면 서 포장 할 만 한 것 이 더 많다.
다음 예 를 보십시오.
$person->getDepartment()->getManager()는 Xiaocai 의 지도 자 를 찾 으 려 면 department 를 거 쳐 야 하기 때문에 우리 가 해 야 할 일 은 department 를 숨 겨 야 한 다 는 것 을 분명히 밝 혔 다.결합 성 을 줄 일 수 있 습 니 다.
Remove Middle Man
상황:만약 에 어떤 Class 가 Simple Delegate 를 너무 많이 했다 면 우 리 는 Delegate Class 를 직접 호출 할 것 입 니 다.
동기:Hide Delegate 의 예 에서 Department 가 더 많은 새로운 방법 이 있 을 때 우 리 는 Hide Delegate 를 위해 Person 에 해당 하 는 방법 을 추가 하여 Delegate 를 사용 해 야 합 니 다.이때 Person 은 완전히 Middle Man 이 되 었 다.이때 우 리 는 Delegate Class―Department 를 직접 호출 해 야 한다.
재 구성 의 의 미 는 바로 네가 옳 고 그 름 을 말 할 필요 가 없다 는 것 이다.네가 문제 가 생 긴 곳 을 잘 고치 기만 하면 된다 는 것 이다.
Introduce Foreign Method
상황:클 라 이언 트 가 사용 해 야 할 클래스 Previous End 의 추가 함수 가 있 습 니 다.그러나 이러한 종류의 Previous End 를 수정 할 수 없습니다.그러면 클 라 이언 트 에서 함 수 를 만 들 고 Previous End 실 체 를 매개 변수 로 합 니 다.
Introduce Local Extention
상황:클래스 에 추가 함수 가 필요 하지만 현재 클래스 를 수정 할 수 없습니다.이 함 수 를 포함 하도록 새 클래스 를 만 듭 니 다.Subclass 나 Wrapper 를 사용 합 니 다.이것 은 일반적으로 원본 코드 를 수정 할 수 없 는 상황 에서 사용 합 니 다.
위의 Introduce Foreign Method 예 를 들 어
Subclass 방법 사용 하기
Wrapper 사용 하기
총결산
주의해 야 할 것 은"Extract Class"와"Inline Class","Hide Delegate"와"Remove Middle Man"은 모두 상 반 된 과정 입 니 다.구체 적 으로 이해 하면 앞에서 말 한 절차 도 를 볼 수 있 습 니 다.
"Hide Delegate"우 리 는 소량의"Delegate Method"를 사용 할 때,"Remove Middle Man"은"Delegate Method"를 많이 호출 할 때,우 리 는 Delegate Class 를 직접 사용 하여 호출 할 수 있 으 며,어떤 Delegate Method 는 상황 에 따라 일부분 을 보류 합 니 다.
"Extract Class"와"Inline Class","Extract Class"는 과도 한 책임 을 지고 비대 해 지 는 Class 에 자주 사용 되 는데,"Inline Class"는 현재 의 이러한"너무 무책임 한"때 에 자주 사용 된다.저 는 개인 적 으로'Extract Class'를 원 하지 않 고'Inline Class'를 원 하지 않 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Koin원티드나 로켓펀치로 내가 일할 곳은 어디인가 하는 마음으로 경건히 안드로이드 개발자 구직 글을 보다 보면 우대조건에 mvp,mvvm,di,rxjava는 거의 고정이다. (경력은 자격요건에 다 요구) mvvm을 제외하...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.