JAVA 디자인 모드. - 장식 모드.
예 를 들 어:
우 리 는 인터넷 에서 휴대 전 화 를 사고 싶다. 만약 에 애플 X, 4000 대양 을 샀 다 면? 그리고?누 드 기기 만 있 고 우 리 는 부품 을 사서 그것 의 기능 을 강화 하려 고 한다. 인터넷 쇼핑 몰 에는 많은 부품 이 있다. 예 를 들 어 핸드폰 케이스 30 대양, Beats 이어폰 500 대양 등 이다.
우 리 는 현재 계승 으로 이 문 제 를 처리 하고 핸드폰 추상 류, 애플 핸드폰 추상 류 를 정의 합 니 다. (Mobile. java)
package extend;
/**
*
*/
public abstract class Mobile {
/**
*
*/
protected String name;
/**
*
*/
protected Double price;
/**
*
* @return
*/
public abstract String getName();
/**
*
* @return
*/
public abstract double getPrice();
}
애플 폰 클래스 (애플 모 바 일 자바)
package extend;
/**
*
*/
public class AppleMobile extends Mobile{
@Override
public double getPrice() {
return this.price;
}
@Override
public String getName() {
return this.name;
}
public AppleMobile() {
this.name = " ";
this.price = 5000d;
}
}
만약 우리 가 휴대 전화 케이스 를 하나 더 사고 싶다 면, 하나의 자 류 를 실현 해 야 한다.
package extend;
/**
* +
*/
public class MobileCaseAppleMobile extends AppleMobile{
private String mobileCaseName(){
return " + ";
}
private Double mobileCasePrice(){
return 30d;
}
@Override
public String getName() {
return super.getName() + mobileCaseName();
}
@Override
public double getPrice() {
return super.getPrice() + mobileCasePrice();
}
}
package extend;
public class Demo {
public static void main(String[] args) {
Mobile mobile = new MobileCaseAppleMobile();
System.out.println(mobile.getName());
System.out.println(mobile.getPrice());
}
}
대응 출력: 아이 폰 + 케이스 503.00
우리 가 애플 폰 + 이어폰 을 사려 면?그러면 또 다른 하위 클래스 를 실현 해 야 한다. 한 세트 에 해당 한다.그러나 부품 이 점점 많아 지면 우 리 는 매우 많은 세트 에 대응 해 야 한다. 이런 상황 에서 이른바 폭발 이 발생 할 것 이다.
장식 모드 로 처리 하면 요?우 리 는 하나의 핸드폰 추상 류, 하나의 애플 핸드폰 류, 하나의 부품 장식 추상 류, 하나의 이어폰 부품 장식 류, 하나의 핸드폰 케이스 부품 장식 류 를 정의 한다.
핸드폰 추상 클래스: (Mobile. java)
package decorator;
/**
*
*/
public abstract class Mobile {
/**
*
*/
protected String name;
/**
*
*/
protected Double price;
/**
*
* @return
*/
public abstract String getName();
/**
*
* @return
*/
public abstract double getPrice();
}
애플 폰 클래스 (애플 모 바 일 자바)
package decorator;
/**
*
*/
public class AppleMobile extends Mobile{
@Override
public double getPrice() {
return this.price;
}
@Override
public String getName() {
return this.name;
}
public AppleMobile() {
this.name = " ";
this.price = 5000d;
}
}
부품 장식 추상 클래스 (Accessories. java)
package decorator;
/**
* , ,
*/
public abstract class Accessories extends Mobile{
/**
*
*/
protected Mobile mobile;
public Accessories(Mobile mobile) {
this.mobile = mobile;
}
//
public abstract String getDecoratorName();
}
이어폰 부품 장식 류 (Headset. java)
package decorator;
/**
*
*/
public class Headset extends Accessories{
public Headset(Mobile mobile) {
super(mobile);
}
@Override
public String getName() {
return mobile.getName() + "+" +getDecoratorName();
}
@Override
public double getPrice() {
return mobile.getPrice() + 500d;
}
@Override
public String getDecoratorName() {
return "Beats ";
}
}
핸드폰 케이스 부품 장식 류 (MobileCase. java)
package decorator;
/**
*
*/
public class MobileCase extends Accessories{
public MobileCase(Mobile mobile) {
super(mobile);
}
@Override
public String getName() {
return mobile.getName() + "+" + getDecoratorName();
}
@Override
public double getPrice() {
return mobile.getPrice() + 30d;
}
@Override
public String getDecoratorName() {
return " ";
}
}
package decorator;
public class Demo {
public static void main(String[] args) {
Mobile mobile = new AppleMobile();
System.out.println(mobile.getName());
System.out.println(mobile.getPrice());
mobile = new MobileCase(mobile);
System.out.println(mobile.getName());
System.out.println(mobile.getPrice());
mobile = new Headset(mobile);
System.out.println(mobile.getName());
System.out.println(mobile.getPrice());
}
}
대응 수출: 아이 폰 5000.0 아이 폰 + 케이스 503.00 아이 폰 + 케이스 + 비트 이어폰 5530.0
위 와 같이 우 리 는 동태 적 으로 조합 할 수 있 고 동태 적 으로 우리 가 필요 로 하 는 핸드폰 을 강화 할 수 있다. 만약 에 우리 가 아이 폰 + 핸드폰 케이스 만 있 으 면
package decorator;
public class Demo {
public static void main(String[] args) {
Mobile mobile = new AppleMobile();
mobile = new MobileCase(mobile);
System.out.println(mobile.getName());
System.out.println(mobile.getPrice());
}
}
대응 출력: 아이 폰 + 케이스 503.00
이 를 통 해 알 수 있 듯 이 우 리 는 장식 모델 을 사용 하고 부품 유형 을 새로 추가 하려 면 부품 류 를 추가 합 니 다.그리고 구 매 할 때 프 리 조합 하면 돼 요.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
디자인 모델 의 공장 모델, 단일 모델자바 는 23 가지 디자인 모델 (프로 그래 밍 사상/프로 그래 밍 방식) 이 있 습 니 다. 공장 모드 하나의 공장 류 를 만들어 같은 인 터 페 이 스 를 실현 한 일부 종 류 를 인 스 턴 스 로 만 드 는 것...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.