# Java Adapter Design Pattern

# Java Adapter Design Pattern

by jihoon kim

HTML

<style>
.MJXp-math.MJXp-display {
  display:inline !important;
}
</style>
<div id="contents">
#### 원본
  https://examples.javacodegeeks.com/core-java/java-adapter-design-pattern-example/

# 디자인 패턴의 범주
    객체 생성 패턴(Creational design patterns)   : 객체의 인스턴스 생성을 관리하기 위해 정의 된 디자인 패턴
    구조 디자인 패턴(Structural design patterns) : 클래스를 사용하여 구조를 작성하여 코딩을 단순화하고 관리하기 쉽게 정의 된 디자인 패턴
    행동 설계 패턴(Behavioural design patterns)  : 서로 다른 객체 간의 상호 작용을 관리하기 위해 정의 된 설계 패턴.

# Adapter Design Pattern
  - 전기 전압을 다른 전압으로 변환하는 개념에서 기반됨.
![Adapter Design Pattern](https://examples.javacodegeeks.com/wp-content/uploads/2018/09/Screen-Shot-2018-09-07-at-10.24.38-PM.jpeg.webp)

Client  == 전기<br/>
Adapter == 전압변환을 제공<br/>
Adaptee == 소켓

# 구현 개념
 - 기본 객체를 함수의 입력으로 사용하고,
   --> 객체의 변형을 반환하는 클래스를 만듭니다.
   --> 클라이언트는 필요에 따라 엔티티를 수정할 수 있는 유연성을 얻습니다.

# 어댑터 디자인 패턴의 유형
  1. 클래스 어댑터 디자인 패턴 : 소켓 클래스 확장
  2. 객체 어댑터 디자인 패턴   : 어댑터 인터페이스 구현, 소켓 클래스 객체 사용

## 클래스 어댑터 디자인 패턴
#### Flour.java
- 전기 공급단계 크기(weight), 가격(price)를 가진다.
```java
package com.javacodegeeks.abk;

public class Flour {
	int weight;
	float price;

	public Flour(){

	}
	public Flour(int weight,float price) {
		this.weight = weight;
		this.price = price;
	}
	public int getWeight() {
		return weight;
	}
	public void setWeight(int weight) {
		this.weight = weight;
	}
	public float getPrice() {
		return price;
	}
	public void setPrice(float price) {
		this.price = price;
	}

}
```
#### FlourItem.java
- 객체를 가져옮 : Flour 클래스를 기본값으로 이용함.

```java
package com.javacodegeeks.abk;

public class FlourItem {
	public Flour getFlourItem() {
		return new Flour(10,1000);
	}
}
```
#### FlourInterface.java
- 기본 객체를 제공하는 소켓 클래스 FlourItem을 확장함.
```java
package com.javacodegeeks.abk;

public interface FlourItemInterface {
	public Flour getQuintal();

	public Flour get10kg();

	public Flour get1kg();
}
```

#### FlourItemImplementor.java
- 어댑터의 구현.
```java
package com.javacodegeeks.abk;

public class FlourItemImplementor extends FlourItem implements FlourItemInterface...