티스토리 뷰
반응형
인터페이스란?
다른 클래스를 작성할 때 기본이 되는 틀을 제공하면서, 다른 클래스 사이의 중간 매개 역할까지 담당하는 일종의 추상 클래스를 의미합니다.
인터페이스의 객체지향 특징?
다형성 : 한 가지 타입으로 여러가지 구현체를 사용할 수 있는 것이다. -> 유지보수의 편의를
ex. 한 카페에서 여러 음료를 시킬수있다.
클래스와 클래스 간의 관계를 인터페이스로 연결하면, 클래스마다 독립적인 프로그래밍이 가능
예시
*기존
public class Americano {
public String coffeeName() {
return "americano";
}
}
public class Cafe {
private Americano coffee;
public void makeCoffee(Americano coffee){
this.coffee = coffee;
}
public String takeOutCoffee(){
return coffee.coffeeName();
}
}
=> 다른 커피종류를 추가하려고 하면 그때마다 클래스와 메서드를 각각 추가해줘야한다.
*인터페이스 사용
* 커피를 다양한 종류로 만들수있게 공통부분(커피이름)을 interface로 만든다.
public interface Coffee {
String coffeeName();
}
public class Americano implements Coffee {
@Override
public String coffeeName() {
return "americano";
}
}
public class Latte implements Coffee{
@Override
public String coffeeName() {
return "Latte";
}
}
*카페에서 다양한 커피를 팔수있게된다.
public class Cafe {
private Coffee coffee;
public void makeCoffee(Coffee coffee){
this.coffee = coffee;
}
public String takeOutCoffee(){
return coffee.coffeeName();
}
}
* 결과
public class Customer {
public static void main(String[] args) {
Cafe cafe = new Cafe();
Coffee americano = new Americano();
cafe.makeCoffee(americano);
System.out.println(cafe.takeOutCoffee());
}
}
SOLID원칙에 해당되는 것은?
- DIP (Dependency Inversion Principle) 의존 역전 원칙
: 자주 변경하는 concreate(구체적인)클래스 대신 인터페이스나 추상 클래스에 의존하라
-> 변하기 쉬운것에 의존하는것 대신, 변하지 않는것에 의존해라.
- 장점 : 확장성에 용이, 객체간의 관계가 느슨해짐 -> 복잡하고 다양한 설계 가능
*참고
반응형
'JAVA' 카테고리의 다른 글
[JAVA] HashMap, HashTable, ConcurrentHashMap,LinkedHashMap 차이 (0) | 2023.04.04 |
---|---|
[JAVA] 객체 지향의 특징 4가지 (0) | 2023.02.23 |
[JAVA] 람다 (1) | 2023.01.30 |
자바 문자열 파싱(parsing) : StringTokenizer (0) | 2023.01.27 |
[JAVA] JVM (0) | 2023.01.14 |
댓글