[꼭대기] 자바 디자인 모델 의 decoration 모드
3418 단어 대상 을 향 하 다자바 디자인 모드
디자인 모델 의 본원 은 자바 개발 에서 대상 을 대상 으로 하 는 여러 가지 원칙 이다. 예 를 들 어 후진 원칙 (DIP), 개폐 원칙 (OCP), 인터페이스 프로 그래 밍 (programming to interface) 등에 의존 하 는 것 이다. 그러나 근본 적 인 목적 은 정보 숨 김 과 모듈 화 이다. 그리고 최종 적 인 추 구 는 프로그램의 효용, 견고, 심미 이다. 이것 은 디자인 모델 의 남상 이다.
디자인 모델 을 사용 하면 어떤 장점 이 있 습 니까? 다른 프로그래머 와 의사 소통 을 할 때 디자인 모델 의 공유 문 구 를 사용 합 니 다. 사실은 '다른 사람과' 행 어 '를 공유 하 는 것 이 아 닙 니 다. 이 유 는 다음 과 같 습 니 다.
1. 공유 모델 의 단어 인 '위력 이 강하 다'. 모델 이름 을 사용 하여 다른 개발 자 나 개발 팀 과 교 류 를 할 때 모델 이름 이 아니 라 전체 모델 뒤에 상징 되 는 품질, 특성, 제약 을 교류 합 니 다.
2. 모델 은 더 적은 단 어 를 사용 하여 더욱 충분 한 교 류 를 할 수 있 습 니 다. 이것 은 '소 언' 프로그래머 에 게 큰 행운 입 니 다.
3. 디자인 모델 은 '디자인 라인' 에 더욱 집중 할 수 있 습 니 다. 그러면 너무 일찍 디자인 바 텀 디 테 일 에 대한 사 고 를 하지 않 습 니 다. (세 가지 내용 은 에서 발췌)
《 헤드 퍼스트 디자인 모델 》.스타 벅 스 카페 의 자동 판매 시스템 을 예 로 들 어 상황 설 계 를 한다. 고객 이 커피 를 구 매 할 때 그 요구 에 따라 커피 에 다양한 양념 을 넣 을 수 있다. 예 를 들 어 모 카, 두유 또는 우 유 를 덮 는 것 이다. 시스템 은 넣 은 양념 에 따라 비용 을 받는다. 그래서 서로 다른 커피 와 양념 간 의 자유로운 조합 은 대량의 대상 을 만 들 었 다. 이것 은유지 보 수 는 매우 큰 번 거 로 움 을 가 져 온다.
이 를 통 해 우 리 는 장식 자 모델, 즉 동태 적 으로 책임 을 대상 에 부가 하고 기능 을 확장 하려 면 장식 자 는 계승 보다 더욱 탄력 적 인 대체 방안 을 제공 합 니 다. 그 중의 세부 사항 은:
1. 장식 자 와 피 장식 대상 은 같은 초 유형 을 가지 고 있다.
2. 하나 이상 의 장식 자 를 이용 하여 대상 을 포장 할 수 있 습 니 다.
3. 원시 대상 (포장) 이 필요 한 경우 장식 자 대상 으로 대체 할 수 있 습 니 다.
4. 장식 자 는 의뢰 한 피 장식 자의 행위 전이 나 그 후에 자신의 행 위 를 더 해 특정한 목적 에 도달 할 수 있다.
5. 장식 자 는 장식 자 를 포장 할 수 있 습 니 다. 이때 포 장 된 장식 자 는 반드시 피 장식 자 를 포 장 했 을 것 입 니 다.
전체적으로 보면 장식 자 는 비슷 한 줄거리 에서 간단 한 계승 을 사용 할 때 발생 하 는 대량의 대상 의 악몽 을 지 키 는 것 을 피한다.
다음은 하나의 예 이다.
이것 은 장식 자의 초유 류 이다.
public abstract class extends {
public abstract String ();
}
이것 은 커피 의 종류 이다.public abstract class {
String cfName = "not Name";
public String (){
return cfName;
}
public abstract double ();
}
다음은 두 개의 구체 적 인 장식 자 입 니 다.
public class A extends {
cf;
public A( cf){
this.cf = cf;
}
@Override
public String () {
return cf. () + " A";
}
@Override
public double () {
return cf. () + 123.01;
}
}
public class B extends {
cf;
public B( cf){
this.cf = cf;
}
@Override
public String () {
return cf. () + " B";
}
@Override
public double () {
return cf. () + 165.01;
}
}
이것 은 커피 종류 입 니 다.
public class A extends {
public A(){
cfName = " A";
}
@Override
public double () {
return 10.11;
}
}
다음은 demo:public class {
public static void main(String[] args) {
c = new A(new A());
System.out.println(c. ());
System.out.println(c. ());
}
}
내용 이 그렇게 많 고 책 에서 얻 은 것 이 많 습 니 다. 그러나 저 는 예 를 들 어 커피 의 초 류 는 추상 류 가 아니 라 new 가 해당 대상 을 낼 때 다른 모델 인 공장 모델 로 인터페이스 프로 그래 밍 원칙 을 실현 할 수 있다 고 생각 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JS 에서 대상 을 마주 하 는 프로 그래 밍유형 적 으로 특정한 기능 을 실현 하면 모든 인 스 턴 스 가 이 기능 을 갖 출 수 있 습 니 다.만약 우리 가 방법 을 다 썼 다 면 우 리 는 원래 코드 를 바 꾸 지 않 고 새로운 기능 을 추가 할 수 있다...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.