package com.haenin.section04.interfacesegregation.problem;

/* 설명.
*   인터페이스 분리 원칙(Interface Segregation Principle) - "쓸데없는 규약을 싫어!"
*   - 자신이 사용하지 않는 메소드에 의존하지 않아야 한다.
*       (인터페이스가 너무 많은 규약을 가지면 안된다.)
* */
public class Application {
    public static void main(String[] args) {
        BadOldMachine oldPrinter = new BadOldPrinter();
        oldPrinter.print();
        oldPrinter.fax();   // 필기. 실제로는 지원하지 않는 기능
        oldPrinter.scan();  // 필기. 실제로는 지원하지 않는 기능
    }
}

package com.haenin.section04.interfacesegregation.problem;

public interface BadOldMachine {
    void print();
    void fax();
    void scan();
}

package com.haenin.section04.interfacesegregation.problem;

public class BadOldPrinter implements BadOldMachine{
    @Override
    public void print() {
        System.out.println("문서를 힙겹게 인쇄합니다.");
    }

    @Override
    public void fax() {
        /* 설명. fax 기능은 지원조차 되지 않음 */
    }

    @Override
    public void scan() {
        /* 설명. scan 기능은 지원조차 되지 않음 */
    }
}