자바 개발 의 교체
17052 단어 Java
채널 유형: 저축 카드, 신용카드, 공중전화
일반 구현:
public static final String depositCard = "depositCard";
public static final String creditCard = "creditCard ";
public static final String OfficialAccounts = "OfficialAccounts";
public void auto(String channelType) {
if (!StringUtils.isEmpty(channelType)) {
if (depositCard.equals(channelType)) {
//TODO
} else if (creditCard .equals(channelType)) {
//TODO
} else if (OfficialAccounts.equals(channelType)) {
//TODO
} else {
//TODO
}
}
}
인터페이스 레이 어 링: 인터페이스 레이 어 링 은 인 터 페 이 스 를 내부 인터페이스 와 대외 인터페이스 로 나 누 어 비 어 있 는 판단 을 외부 인터페이스 에 두 고 처리 하 는 것 이다. 내부 인터페이스 에 들 어 오 는 변 수 는 외부 인터페이스 에서 비 어 있 지 않 고 2 에서 빈 값 으로 판단 하 는 것 이다.
public static final String depositCard = "depositCard";
public static final String creditCard = "creditCard ";
public static final String OfficialAccounts = "OfficialAccounts";
public void auto(String channelType) {
if (!StringUtils.isEmpty(channelType)) {
autoImpl(channelType);
}
}
private void autoImpl(String channelType) {
if (depositCard.equals(channelType)) {
//TODO
} else if (creditCard .equals(channelType)) {
//TODO
} else if (OfficialAccounts.equals(channelType)) {
//TODO
} else {
//TODO
}
}
다 중 구현:
public abstract class Channel {
public String type;
public Channel(String type) {
this.type = type;
}
public abstract void auto();
}
public class DepositCardChannel extends Channel {
public DepositCardChannel(String type) {
super(type);
}
@Override
public void auto() {
System.out.println("This is DepositCardChannel");
}
}
public class CreditCardChannel extends Channel {
public CreditCardChannel(String type) {
super(type);
}
@Override
public void auto() {
System.out.println("This is CreditCardChannel");
}
}
public void auto(Policy policy) {
if (policy != null) {
autoImpl(policy);
}
}
public void autoImpl(Policy policy) {
policy.auto();
}
자, if else 하나 도 없습니다. 새로운 유형 이 있 으 면 하나의 계승 채널 만 추가 하면 됩 니 다.
분기 문 대신 맵 사용 하기:
private static Map<String, Class<? extends Policy>> map = new HashMap<>();
public static final String OPEN_POLICY = "OpenPolicy";
public static final String SUB_POLICY = "SubPolicy";
static {
map.put(OPEN_POLICY, OpenPolicy.class);
map.put(SUB_POLICY, SubPolicy.class);
}
public void auto(String policyType) {
try {
Class<? extends Policy> clazz = map.get(policyType);
clazz.newInstance().auto();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.