[디자인 모드] [주입 의존]
2216 단어 디자인 모드
운전 기사 가 운전 하 는 장면 이 있 습 니 다.
보통 이렇게 써 요.
Public Driver{ //
...
public void drive(){
Car mCar=new Car(“ ”);
mCar.dianHuo();//
mCar.guaDang();//
mCar.caiYouMen();//
mCar.daFangXiang();//
...
}
}
2. 문제
(1) 결합 도가 높 음: Driver 에서 Car 라 는 종 류 를 만 들 고 소지 하 며 Car 의 생명 주 기 를 관리 합 니 다.
(2) 유지 하기 어렵다: Car 의 유 니 버 설 성 이 너무 강해 서 자동차 모델 등 매개 변수 (예 를 들 어 자동 기어 와 수 동 기어) 를 세분 화하 여 서로 다른 처 리 를 실현 할 수 없다 (서로 다른 자동차, 점화, 기어, 액셀 밟 기, 방향 등 조작 이 각각 다르다).
3. 해결 방향
배경 에서 의 예 는 실질 적 으로 'XX 차 를 운전 하 는 운전 자, 운전' 이 고 핵심 은 XX 차 를 운전 하 는 것 이다.운전 기사 가 중요 한 게 아니 라어떻게 운전 하 는 지, 기 사 는 차 의 속성 에 의존한다.
따라서 운전 자의 의존 대상 차 를 운전 자 에 게 주입 해 야 하 며 운전 자 는 스스로 차 를 인용 할 필요 가 없다. 이 과정 에서 운전 자 는 주목 할 필요 가 없다.
4. 구체 적 인 방안
(1) Car 공공 속성 인터페이스
public interface ICar {
public void dianHuo();//
public void guaDang();//
public void caiYouMen();//
public void daFangXiang();//
…
}
(2) 다른 Car 의 종류
귀중 한 말
public class BaoMa implements ICar {//
public void dianHuo()
{
…
}
public void guaDang()
{
…
}
public void caiYouMen()
{
…
}
public void daFangXiang()
{
…
}
…
}
페라리
public class FaLaLi implements ICar {//
public void dianHuo()
{
…
}
public void guaDang()
{
…
}
public void caiYouMen()
{
…
}
public void daFangXiang()
{
…
}
…
}
3. 운전 기사
Public Driver{
private ICar mCar;
public Driver(ICar onecar){
mCar = onecar;
}
public void drive(){
mCar.dianHuo();// ;
mCar.guaDang();// ;
mCar.caiYouMen();// ;
mCar.daFangXiang();// ;
}
...
}
4. 구체 적 실현
// ,
BaoMa baoMa=new BaoMa();
Driver mDriverByBaoMa=new Driver(baoMa);
mDriverByBaoMa.drive();
// ,
FaLaLi faLaLi=new FaLaLi();
Driver mDriverByFaLaLi=new Driver(faLaLi);
mDriverByFaLaLi.drive();
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
디자인 모델 의 공장 모델, 단일 모델자바 는 23 가지 디자인 모델 (프로 그래 밍 사상/프로 그래 밍 방식) 이 있 습 니 다. 공장 모드 하나의 공장 류 를 만들어 같은 인 터 페 이 스 를 실현 한 일부 종 류 를 인 스 턴 스 로 만 드 는 것...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.