개방과 폐쇄의 원리를 소개 :
1) 폐쇄 원칙 (개방 - 폐쇄 원칙) 가장 기본적이고 중요한 설계 원칙 프로그래밍
같은 클래스, 모듈 및 기능과 같은 2) 소프트웨어 엔티티 것은 공급자에 대한 확장 ()에 대해 열려 있어야, 소비자에게 (수정 휴관) . 확장 세부 구현 건물에 대 한 추상 프레임 워크.
소프트웨어가 변경해야 할 때 3) 소프트웨어 엔터티를 확장하여 행동 변화를 달성하기보다는 기존 코드를 수정하여 변화를 달성하려고.
4) 프로그래밍 원리와 디자인 패턴 객체 기타에 따라 개폐의 원리를 따르는 것입니다.
오류의 예
패키지 com.kittenplus.principle.ocp; 공용 클래스 OCP { 공공 정적 무효 메인 (문자열 []에 args) { GraphicEditor GE = 새로운 새 GraphicEditor (); ge.drawShape ( 새로운 새로운 사각형 ()); ge.drawCircle ( 새로운 새로운 원 () ); }} // 이 클래스에 대한 도면이다 클래스 GraphicEditor { // 수신 Shape 객체 다음 유형에 따라 다른 패턴을 그리 공개 무효화 drawShape (형상 S) { IF 1 (s.m_type를 ==. ) drawRectangle (S ) 다른 IF(s.m_type == 2 ) drawCircle (S); } 공공 공극 drawRectangle (R 형상) { 에서 System.out.println ( "绘制矩形' );} 공공 공극 drawCircle (R 형상) { 에서 System.out.println ( "绘制圆形" ); }} // 모양类基类 클래스 모양 { INT m_type; } 클래스 직사각형 연장 형상 { 직사각형 () { 슈퍼 .m_type = 1 ; }} 클래스 원은 확장 모양을 { 원 () { 슈퍼 .m_type = 2 ; } }
패키지 com.kittenplus.principle.ocp; 공용 클래스 OCP { 공공 정적 무효 메인 (문자열 []에 args) { GraphicEditor GE = 새로운 새 GraphicEditor (); ge.drawShape ( 새로운 새로운 사각형 ()); ge.drawShape ( 새로운 새로운 원 () ) ge.drawShape ( 새로운 새 트라이앵글 ()); ge.drawShape ( 새로운 새 OtherGraphic ()); }} // 이 클래스에 대한 도면이다 클래스 GraphicEditor { // 수신 Shape 객체 다음 형태에 따라 다른 패턴을 그리 공공 무효drawShape (모양의) { s.draw (); } } // 모양类基类 추상 클래스 모양 { INT m_type; 공개 추상 무효 추첨 (); // 抽象方法 } 클래스 직사각형 연장 형상 { 직사각형 () { 슈퍼 .m_type = 1 ; } @Override 공공 무효 추첨 () { 에서 System.out.println ( "绘制矩形" ); } } 클래스 원연장 형상 { 원 () { 슈퍼 .m_type = 2 ; } @Override 공공 무효 추첨 () { 에서 System.out.println ( "绘制圆形" ); } } 클래스 삼각형 연장 형상 { 트라이앵글 () { 슈퍼 .m_type = 3 ; } @Override 공공 무효 추첨 () { 에서 System.out.println ( "绘制三角形" ); } } 클래스 OtherGraphic는 확장{셰이프 OtherGraphic () { 슈퍼 .m_type = 4. ; } @Override 공개 공극 드로우 () { 에서 System.out.println ( "기타 그래픽 드로잉 ' ); } }