diff --git a/design-pattern/src/Adapter/Adapter b/design-pattern/src/Adapter/Adapter new file mode 100644 index 00000000..2b1ac994 --- /dev/null +++ b/design-pattern/src/Adapter/Adapter @@ -0,0 +1,14 @@ +Adapter + - 연관성 없는 두 객체를 묶어서 사용 + - 어떤 메소드를 사용하기위해 로직을 변경해야 하는 경우 사용 + +요구사항 + - 두 수에 대한 다음 연산을 수행하는 객체를 만든다 + - 수의 두 배의 수를 반환 : twiceOf(Float) : Float + - 수의 반(1/2)의 수를 반환 : halfOf(Float) : Float + - 구현 객체의 이름은 'Adapter' + - Math 클래스에서 두 배와 절반을 구하는 함수는 이미 구현되어 있다. + - 파라미터로 double 타입을 받는다. + + - Math 클래스에 새롭게 두 배를 구할 수 있는 메소드 추가 + - 절반을 구하는 기능에서 로그를 찍는 기능을 추가 \ No newline at end of file diff --git a/design-pattern/src/Adapter/Adapter.java b/design-pattern/src/Adapter/Adapter.java new file mode 100644 index 00000000..67818001 --- /dev/null +++ b/design-pattern/src/Adapter/Adapter.java @@ -0,0 +1,7 @@ +package Adapter; + +public interface Adapter { + + Float twiceOf(Float f); + Float halfOf(Float f); +} diff --git a/design-pattern/src/Adapter/AdapterImpl.java b/design-pattern/src/Adapter/AdapterImpl.java new file mode 100644 index 00000000..be87e449 --- /dev/null +++ b/design-pattern/src/Adapter/AdapterImpl.java @@ -0,0 +1,16 @@ +package Adapter; + +public class AdapterImpl implements Adapter{ + + @Override + public Float twiceOf(Float f) { +// return (float) Math.twoTime(f.doubleValue()); + return Math.doubled(f.doubleValue()).floatValue(); + } + + @Override + public Float halfOf(Float f) { + System.out.println("half 메소드 호출"); + return (float) Math.half(f.doubleValue()); + } +} diff --git a/design-pattern/src/Adapter/Main.java b/design-pattern/src/Adapter/Main.java new file mode 100644 index 00000000..6d66484c --- /dev/null +++ b/design-pattern/src/Adapter/Main.java @@ -0,0 +1,10 @@ +package Adapter; + +public class Main { + public static void main(String[] args) { + Adapter adapter = new AdapterImpl(); + + System.out.println(adapter.halfOf(100f)); + System.out.println(adapter.twiceOf(10f)); + } +} diff --git a/design-pattern/src/Adapter/Math.java b/design-pattern/src/Adapter/Math.java new file mode 100644 index 00000000..2420bb4e --- /dev/null +++ b/design-pattern/src/Adapter/Math.java @@ -0,0 +1,20 @@ +package Adapter; + +public class Math { + + // 두배 + public static double twoTime(double num) { + return num * 2; + } + + // 절반 + public static double half(double num ) { + return num / 2; + } + + // 강화된 알고리즘 + public static Double doubled(Double d) { + return d * 2; + } + +} diff --git a/design-pattern/src/Strategy/Strategy b/design-pattern/src/Strategy/Strategy index 14f7319e..fd34e0e5 100644 --- a/design-pattern/src/Strategy/Strategy +++ b/design-pattern/src/Strategy/Strategy @@ -8,7 +8,7 @@ 델리게이트 - 위임하다 AObj 에서 funcAA를 사용하기위해 AinterfaceImpl 객체를 호출, 메소드 사용 - - 어떤 객체가 어떤 기능을 수행할 때 그 객체 이외의 다른 객체의 기능을 사용 + - 어떤 객체가 어떤 기능을 수행할 때 그 객체 이외의 다른 객체의 기능을 사용 Strategy pattern - 여러 알고리즘을 하나의 추상적인 접근점을 만들어 접근 점에서 서로 교환 가능하도록 하는 패턴