package com.haenin.section04.interfacesegregation.resolved;

public class Application {
    public static void main(String[] args) {
        BasicPrinter bp = new BasicPrinter();
        bp.print();
        AdvancedPrinter ap = new AdvancedPrinter();
        ap.print();
        ap.fax();
        ap.scan();
    }
}

package com.haenin.section04.interfacesegregation.resolved;

public interface FaxMachine {
    void fax();
}

package com.haenin.section04.interfacesegregation.resolved;

public interface PrintOnly {
    void print();
}

package com.haenin.section04.interfacesegregation.resolved;

public interface Scanner {
    void scan();
}

package com.haenin.section04.interfacesegregation.resolved;

public interface MultiFunctionPrinter extends FaxMachine, PrintOnly, Scanner {

}

package com.haenin.section04.interfacesegregation.resolved;

public class BasicPrinter implements PrintOnly{
    @Override
    public void print() {
        System.out.println("깔금하게 문서를 출력합니다.");
    }
}

package com.haenin.section04.interfacesegregation.resolved;

public class AdvancedPrinter implements MultiFunctionPrinter{
    @Override
    public void fax() {
        System.out.println("팩스를 보냅니다.");
    }

    @Override
    public void print() {
        System.out.println("문서를 깔끔하게 출력합니다.");
    }

    @Override
    public void scan() {
        System.out.println("심지어 스캔도 가능합니다.");
    }
}