디자인 모델 6 대 원칙(5)인터페이스 격 리 원칙

21390 단어 디자인 모드(Java)
디자인 모델 6 대 원칙
정의:약칭 ISP.클 라 이언 트 는 필요 하지 않 은 인터페이스 에 의존 해 서 는 안 된다.다른 클래스 에 대한 의존 은 최소 인터페이스 에 세 워 져 야 한다.
예 를 들 면:
지 정 된 식재 료(토마토,오이,미나리)를 주 고 냉 열 채 사 는 자신의 수요 에 따라 식재 료 를 예 처리 해 야 한다.
먼저 인터페이스 격 리 원칙 을 사용 하지 않 으 면 코드 가 어떻게 되 는 지 봅 시다.
public class MadeFood {
    interface MadeFoodInter{
        void madeHot();
        void madeCold();
    }
    class Tomatoes implements MadeFoodInter{

        @Override
        public void madeHot() {
            Log.w("  ","  ->   ->  ->      ");
        }

        @Override
        public void madeCold() {
            Log.w("  ","  ->  ->  ->  ->    ");
        }
    }

    class Cucumber implements MadeFoodInter{

        @Override
        public void madeHot() {
            Log.w("  ","  ->  ->  ->    ");
        }

        @Override
        public void madeCold() {
            Log.w("  ","  ->  ->   ->  ->   ");
        }
    }
    class Celery implements MadeFoodInter{

        @Override
        public void madeHot() {
            Log.w("  ","  ->  ->  ->   ->    ");
        }

        @Override
        public void madeCold() {
            Log.w("  ","  ->  ->  ->   ->    ");
        }
    }
    
    public MadeFoodInter getMade(String name){
        MadeFoodInter madeFoodInter = null;
        if(name.equals("   ")){
            madeFoodInter = new Tomatoes();
        }else if(name.equals("  ")){
            madeFoodInter = new Cucumber();
        }else if(name.equals("  ")){
            madeFoodInter = new Celery();
        }
        return madeFoodInter;
    }
}

위의 예 를 통 해 알 수 있 듯 이 차 가운 요리 에 필요 한 기능 을 인터페이스 에 넣 은 후에 뜨 거 운 요리 아저씨 가 인 터 페 이 스 를 호출 한 후에 차 가운 요리 의 제작 방법 도 뜨 거 운 요리 아저씨 앞 에 강제로 놓 았 다.이것 은 우리 가 디자인 해 서 는 안 되 는 것 이 분명 하 다.다음 조정 진행:
public class MadeFood {
    interface MadeHotInter{
        void madeHot();
    }
    interface MadeColdInter{
        void madeCold();
    }
    class Tomatoes implements MadeHotInter,MadeColdInter{

        @Override
        public void madeHot() {
            Log.w("  ","  ->   ->  ->      ");
        }

        @Override
        public void madeCold() {
            Log.w("  ","  ->  ->  ->  ->    ");
        }
    }

    class Cucumber implements MadeHotInter,MadeColdInter{

        @Override
        public void madeHot() {
            Log.w("  ","  ->  ->  ->    ");
        }

        @Override
        public void madeCold() {
            Log.w("  ","  ->  ->   ->  ->   ");
        }
    }
    class Celery implements MadeHotInter,MadeColdInter{

        @Override
        public void madeHot() {
            Log.w("  ","  ->  ->  ->   ->    ");
        }

        @Override
        public void madeCold() {
            Log.w("  ","  ->  ->  ->   ->    ");
        }
    }

    public MadeHotInter getHote(String name){
        MadeHotInter madeFoodInter = null;
        if(name.equals("   ")){
            madeFoodInter = new Tomatoes();
        }else if(name.equals("  ")){
            madeFoodInter = new Cucumber();
        }else if(name.equals("  ")){
            madeFoodInter = new Celery();
        }
        return madeFoodInter;
    }
    public MadeColdInter getColde(String name){
        MadeColdInter madeFoodInter = null;
        if(name.equals("   ")){
            madeFoodInter = new Tomatoes();
        }else if(name.equals("  ")){
            madeFoodInter = new Cucumber();
        }else if(name.equals("  ")){
            madeFoodInter = new Celery();
        }
        return madeFoodInter;
    }
}

여기 서도 당연히 코드 를 간소화 할 수 있 지만 이렇게 하면 더욱 직관 적 이다.이렇게 처리 한 후에 뜨 거 운 요리 사 는 모두 뜨 거 운 요 리 를 만 드 는 방법 을 받 았 고 차 가운 요리 사 는 차 가운 요 리 를 만 드 는 방법 만 받 았 다.이 방법 을 호출 하면 코드 양 이 반드시 줄 어 들 지 는 않 지만 논리 가 뚜렷 해진 다.
한 마디 로 하면 인터페이스 격 리 원칙 은 가능 한 한 인터페이스 안의 방법 을 호출 할 때 반드시 사용 하 는 것 이다.원칙적으로 인터페이스 가 많 을 지 언 정 기능 이 복잡 하지 않다(물론 개발 실제 상황 에 따라).

좋은 웹페이지 즐겨찾기