자바 디자인 모델의 개방 폐쇄 원칙에 대해 간단히 말하다

3384 단어 개방폐쇄
앞에 써주세요.
최근에 새로운 업무를 인수하여 시스템의 구조가 적절하다.그러나 어떤 곳은 사람들로 하여금 두려워하게 하고, 어떤 코드는 비대해서 유지하기 어려워서, 사람들로 하여금 감히 아첨하지 못하게 한다.그래서 자바의 개방 폐쇄 원칙을 결합시켜 일부 코드를 재구성하고 최적화시켰다.
먼저 이전 시스템의 오래된 코드를 보십시오
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로 설정하면 됩니다.이런 변동점 위험은 핵심 논리로 움직이지 않고 통제할 수 있다.
    이상은 본문의 전체 내용입니다. 여러분의 학습에 도움이 되고 저희를 많이 응원해 주십시오.

    좋은 웹페이지 즐겨찾기