자바 디자인 모델의 개방 폐쇄 원칙에 대해 간단히 말하다
최근에 새로운 업무를 인수하여 시스템의 구조가 적절하다.그러나 어떤 곳은 사람들로 하여금 두려워하게 하고, 어떤 코드는 비대해서 유지하기 어려워서, 사람들로 하여금 감히 아첨하지 못하게 한다.그래서 자바의 개방 폐쇄 원칙을 결합시켜 일부 코드를 재구성하고 최적화시켰다.
먼저 이전 시스템의 오래된 코드를 보십시오
ShareChannelManager.java
public ResultDO<String> shareChannel(int shareCode) {
if(ShareCodeUtil.share2A(shareCode)) {
// TODO, A
}
if(ShareCodeUtil.share2B(shareCode)) {
// TODO, B
}
... n...
}
shareChannel 이 방법은 공유 채널의 주요 체인 논리를 탑재했다.각 채널에 공유된 코드는 모두 하나의 방법에 쓰여 있어 매우 비대하고 유지하기가 어렵다.매번 공유 채널을 추가할 때마다 이 중량급 방법을 수정해야 한다.살짝 손을 떨면 다른 경로의 공유에 영향을 줄 수 있다.자바의 개방 폐쇄 원칙에도 위배된다.Java의 개방형 폐쇄 원칙 소개
자바 개방 폐쇄 원칙, 어떻게 보면 모순된 feel.개방했는데 왜 폐쇄를 해요?겉으로 이해하지 마라.두 차원에서 생각하면 **개방 ** & **폐쇄 **.Java의 개방 원칙은 디자인의 구조가 양호한 확장성을 갖추는 것을 말한다.폐쇄 원칙은 시스템의 구조 메인 체인이 업무의 교체에 따라 크게 바뀌어서는 안 된다는 것이다. 툭하면 전신이라도 시스템의 구조에 문제가 있다는 것을 설명할 수 있을 뿐이다.모든 시스템은 반드시 0에서 1의 과정을 거쳐야 하며 업무의 발전에 따라 시스템도 변하지 않을 수 있다.어떻게 시스템의 구조를 전망성, 그리고 확장시킬 것인가는 모두 우리가 일상 개발에서 반드시 생각해야 할 기술점이다.
한 마디로 하면 Java의 개방 폐쇄 원칙에는 두 가지 특징이 있다.
사고방식은 여러 개의 공유 채널을 체인식으로 구성하는 것이다.공유 동작을 추상화하여 각 경로로 나누어 실현하다.
공유 채널 체인 정의
public class ShareChannelChain {
private final Logger LOG = LoggerFactory.getLogger(this.getClass());
/**
*
*/
private List<ShareChannel> shareChannels;
public ResultDO<String> share(int shareCode) {
for (ShareChannel s : shareChannels) {
ResultDO<String> r = s.share(shareCode);
}
}
공유 채널 상위 클래스 정의
public interface ShareChannel {
public ResultDO<String> share(int shareCod);
}
채널 공유
public class AChannel implements ShareChannel {
@Override
public ResultDO<String> share(int shareCode) {
// TODO A
}
}
B채널 공유
public class BChannel implements ShareChannel {
@Override
public ResultDO<String> share(int shareCode) {
// TODO B
}
}
AChannel과 BChannel을 호출 체인인 ShareChannelChain으로 조립합니다.
<bean id="AChannel" class="com.test.AChannel">
</bean>
<bean id="BChannel" class="com.test.BChannel">
</bean>
<bean id="shareChannelChain" class="com.test.ShareChannelChain">
<property name="shareChannels">
<list>
<ref local="AChannel"/>
<ref local="BChannel"/>
</list>
</property>
</bean>
채널 공유 주요 인터페이스ShareChannelManager.java
public ResultDO<String> shareChannel(int shareCode) {
ShareChannelChain.share(shareCode);
}
마지막으로 돌이켜보면 최적화된 구조의 장점을 볼 수 있다만약에 새로운 채널이 업무 수요를 공유한다고 가정하면 CChannel은 우리가 고쳐야 할 점을 생각해 보세요.이번에는 ShareChannelManager 핵심 클래스 논리를 변경할 필요가 없습니다.CChannel 하나만 확장하여 ShareChannel 인터페이스share 방법을 실현하고 xml로 설정하면 됩니다.이런 변동점 위험은 핵심 논리로 움직이지 않고 통제할 수 있다.
이상은 본문의 전체 내용입니다. 여러분의 학습에 도움이 되고 저희를 많이 응원해 주십시오.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
500 잘못된 검사 방법 [DB Lock 편]최근 일부 API에 500개가 나왔는데 오늘은 날씨가 맑아서 원인을 확인할 수 있어서 그곳에 가는 과정을 적어 보려고 합니다. ※ DB의 Lock 때문에 제목이 스포일러되었습니다. 그러나 이 API 자체가 로그를 남...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.