6 대 설계 원칙 (6): 개폐 원칙
정의:
클래스, 모듈, 함수 와 같은 소프트웨어 실 체 는 확장 을 개방 하고 수정 을 닫 아야 합 니 다.
무슨 뜻 이 죠?
바로 당신 이 쓴 이런 종류 나 인터페이스, 함수 입 니 다. 수요 에 따라 수정 을 해 야 할 때 원본 코드 를 수정 하지 말고 원본 코드 를 확장 해 야 합 니 다.
서점 에서 책 을 파 는 밤 을 들 어 라.
interface IBook {
//
public String getName();
//
public int getPrice();
//
public String getAuthor();
}
//
class NovelBook implements IBook {
private String name;
private int price;
private String author;
public NovelBook(String name, int price, String author) {
super();
this.name = name;
this.price = price;
this.author = author;
}
@Override
public String getName() {
return name;
}
@Override
public int getPrice() {
return price;
}
@Override
public String getAuthor() {
return author;
}
}
public class Client {
private final static ArrayList<IBook> BOOK_LIST = new ArrayList<IBook>();
static {
BOOK_LIST.add(new NovelBook(" ", 3200, " "));
BOOK_LIST.add(new NovelBook(" ", 5600, " "));
BOOK_LIST.add(new NovelBook(" ", 3500, " "));
BOOK_LIST.add(new NovelBook(" ", 4300, " "));
}
public static void main(String[] args) {
NumberFormat format = NumberFormat.getCurrencyInstance();
format.setMaximumFractionDigits(2);
System.out.println("----- :-----");
for (IBook book : BOOK_LIST) {
System.out.println(" :" + book.getName() + "\t :"
+ book.getAuthor() + "\t :"
+ format.format(book.getPrice() / 100.0) + " ");
}
}
}
수요 변화: 모든 40 원 이상 의 책 은 20% 할인 판매, 기타 20% 할인 판매.
IBook 은 인터페이스 로 서 안정 적 이 고 신뢰 할 수 있어 야 하 며 자주 변화 해 서 는 안 된다.
실현 클래스 의 getPrice 방법 을 수정 하 는 것 은 확실히 실현 할 수 있 지만 개폐 원칙 에 부합 되 지 않 는 다.
확장 을 통 해 변화 실현: 다른 클래스 쓰기 OffNovelBook 계승 NovelBook, getPrice 복사 방법.
class OffNovelBook extends NovelBook {
public OffNovelBook(String name, int price, String author) {
super(name, price, author);
}
@Override
public int getPrice() {
int selfPrice = super.getPrice();
int offPrice = 0;
if (selfPrice > 4000) {// 40 9
offPrice = selfPrice * 90 / 100;
} else {// 8
offPrice = selfPrice * 80 / 100;
}
return offPrice;
}
}
필드 클래스 의 정적 모듈 에서 수정 하기:
static {
BOOK_LIST.add(new OffNovelBook(" ", 3200, " "));
BOOK_LIST.add(new OffNovelBook(" ", 5600, " "));
BOOK_LIST.add(new OffNovelBook(" ", 3500, " "));
BOOK_LIST.add(new OffNovelBook(" ", 4300, " "));
}
개폐 원칙 은 매우 공허 한 원칙 으로 앞의 5 가지 원칙 은 개폐 원칙 에 대한 구체 적 인 해석 이지 만 이 5 가지 원칙 에 국한 되 지 않 는 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
디자인 모델 의 공장 모델, 단일 모델자바 는 23 가지 디자인 모델 (프로 그래 밍 사상/프로 그래 밍 방식) 이 있 습 니 다. 공장 모드 하나의 공장 류 를 만들어 같은 인 터 페 이 스 를 실현 한 일부 종 류 를 인 스 턴 스 로 만 드 는 것...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.