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'를 원 하지 않 습 니 다.

좋은 웹페이지 즐겨찾기