From 898bae2f9869d2be76644c21aef5ec2b5121d7c1 Mon Sep 17 00:00:00 2001 From: =taesan Date: Sat, 28 Dec 2019 13:05:59 +0900 Subject: [PATCH] =?UTF-8?q?=EB=8A=90=EC=8A=A8=ED=95=9C=EA=B2=B0=ED=95=A9?= =?UTF-8?q?=EC=97=90=EB=8C=80=ED=95=9C=EC=9D=B4=ED=95=B4=20+=20=EC=8A=A4?= =?UTF-8?q?=ED=94=84=EB=A7=81=20DI=ED=95=A0=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- spring/di/Program.java | 20 +++++++++++++++++--- spring/di/Student.java | 22 ++++++++++++++++++++++ spring/di/entity/CableMouse.java | 20 ++++++++++++++++++++ spring/di/entity/Mouse.java | 10 ++++++++++ spring/di/entity/WireLessMouse.java | 22 ++++++++++++++++++++++ spring/di/setting.xml | 16 ++++++++++++++++ spring/di/ui/Computer.java | 14 ++++++++++++++ spring/di/ui/ExamConsole.java | 3 +++ spring/di/ui/GridExamConsole.java | 11 +++++++++++ spring/di/ui/InlineExamConsole.java | 8 ++++++++ 10 files changed, 143 insertions(+), 3 deletions(-) create mode 100644 spring/di/Student.java create mode 100644 spring/di/entity/CableMouse.java create mode 100644 spring/di/entity/Mouse.java create mode 100644 spring/di/entity/WireLessMouse.java create mode 100644 spring/di/setting.xml create mode 100644 spring/di/ui/Computer.java diff --git a/spring/di/Program.java b/spring/di/Program.java index 7ededf7..33f7fc8 100644 --- a/spring/di/Program.java +++ b/spring/di/Program.java @@ -1,17 +1,18 @@ package spring.di; +import org.springframework.context.ApplicationContext; +import org.springframework.context.support.ClassPathXmlApplicationContext; + import spring.di.entity.Exam; import spring.di.entity.NewlecExam; import spring.di.ui.ExamConsole; -import spring.di.ui.GridExamConsole; -import spring.di.ui.InlineExamConsole; public class Program { public static void main(String[] args) { Exam exam = new NewlecExam(); - ExamConsole console = new InlineExamConsole(exam); // DI + //ExamConsole console = new InlineExamConsole(exam); // DI //ExamConsole console = new GridExamConsole(exam); /* @@ -21,6 +22,19 @@ public class Program { 같은 메서드를 호출하게되는 위 코드의 수정을 대신해줄 수 있도록 하는 기능이 Spring의 DI다. */ + + // 해당 클래스 사용하기위해서 + // Maven 프로젝트로 바꿔서 빌드툴을 사용하도록 하였고 + // Maven Repository에가서 Spring context를 dependency해주었음. + ApplicationContext context = + new ClassPathXmlApplicationContext("spring/di/setting.xml"); + + + //ExamConsole console = (ExamConsole)context.getBean("console"); + ExamConsole console = context.getBean(ExamConsole.class); + console.setExam(exam); + + console.print(); } diff --git a/spring/di/Student.java b/spring/di/Student.java new file mode 100644 index 0000000..0d397fe --- /dev/null +++ b/spring/di/Student.java @@ -0,0 +1,22 @@ +package spring.di; + +import spring.di.entity.CableMouse; +import spring.di.entity.Mouse; +import spring.di.ui.Computer; + +public class Student { + + public static void main(String[] args) { + + Computer computer = new Computer(); + + Mouse mouse = new CableMouse(); // 유선마우스 + //Mouse mouse = new WireLessMouse(); // 무선마우스 + + // 작업을 위한 준비. 마우스 연결 + computer.connectMouse(mouse); + // 연결확인 + computer.mouseCheck(); + + } +} diff --git a/spring/di/entity/CableMouse.java b/spring/di/entity/CableMouse.java new file mode 100644 index 0000000..de517b3 --- /dev/null +++ b/spring/di/entity/CableMouse.java @@ -0,0 +1,20 @@ +package spring.di.entity; + +public class CableMouse implements Mouse{ + @Override + public void clickR() { + System.out.println("[ 유선 R ]"); + } + + @Override + public void clickL() { + System.out.println("[ 유선 L ]"); + } + + @Override + public void mouseCheck() { + System.out.println(" 유선마이스 연결 확인 "); + clickR(); + clickL(); + } +} diff --git a/spring/di/entity/Mouse.java b/spring/di/entity/Mouse.java new file mode 100644 index 0000000..7246b8e --- /dev/null +++ b/spring/di/entity/Mouse.java @@ -0,0 +1,10 @@ +package spring.di.entity; + +public interface Mouse { + + void clickR(); + void clickL(); + + void mouseCheck(); + +} diff --git a/spring/di/entity/WireLessMouse.java b/spring/di/entity/WireLessMouse.java new file mode 100644 index 0000000..d253fc1 --- /dev/null +++ b/spring/di/entity/WireLessMouse.java @@ -0,0 +1,22 @@ +package spring.di.entity; + +public class WireLessMouse implements Mouse { + + @Override + public void clickR() { + System.out.println("[ 무선 R ]"); + + } + + @Override + public void clickL() { + System.out.println("[ 무선 L ]"); + } + + @Override + public void mouseCheck() { + System.out.println(" 무선마이스 연결 확인 "); + clickR(); + clickL(); + } +} diff --git a/spring/di/setting.xml b/spring/di/setting.xml new file mode 100644 index 0000000..29bfdae --- /dev/null +++ b/spring/di/setting.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + diff --git a/spring/di/ui/Computer.java b/spring/di/ui/Computer.java new file mode 100644 index 0000000..6511b0e --- /dev/null +++ b/spring/di/ui/Computer.java @@ -0,0 +1,14 @@ +package spring.di.ui; + +import spring.di.entity.Mouse; + +public class Computer { + private Mouse mouse ; + + public void connectMouse(Mouse mouse) { + this.mouse=mouse; + }; + public void mouseCheck() { + mouse.mouseCheck(); + }; +} diff --git a/spring/di/ui/ExamConsole.java b/spring/di/ui/ExamConsole.java index e65b37e..eb82ab5 100644 --- a/spring/di/ui/ExamConsole.java +++ b/spring/di/ui/ExamConsole.java @@ -1,5 +1,8 @@ package spring.di.ui; +import spring.di.entity.Exam; + public interface ExamConsole { void print(); + void setExam(Exam exam); } diff --git a/spring/di/ui/GridExamConsole.java b/spring/di/ui/GridExamConsole.java index dfa5c1d..eace3b7 100644 --- a/spring/di/ui/GridExamConsole.java +++ b/spring/di/ui/GridExamConsole.java @@ -5,10 +5,14 @@ import spring.di.entity.Exam; public class GridExamConsole implements ExamConsole { private Exam exam; + + public GridExamConsole() { + } public GridExamConsole(Exam exam) { this.exam = exam; } + @Override public void print() { System.out.println("┌──────────┬──────────┐"); @@ -17,5 +21,12 @@ public class GridExamConsole implements ExamConsole { System.out.printf("│ %3d │ %3.2f │\n", exam.total(), exam.avg()); System.out.println("└──────────┴──────────┘"); } + + @Override + public void setExam(Exam exam) { + this.exam = exam; + } + + } diff --git a/spring/di/ui/InlineExamConsole.java b/spring/di/ui/InlineExamConsole.java index 159937e..70ad151 100644 --- a/spring/di/ui/InlineExamConsole.java +++ b/spring/di/ui/InlineExamConsole.java @@ -6,6 +6,9 @@ public class InlineExamConsole implements ExamConsole { private Exam exam; + public InlineExamConsole() { + } + public InlineExamConsole(Exam exam) { this.exam = exam; } @@ -15,4 +18,9 @@ public class InlineExamConsole implements ExamConsole { System.out.printf("total is %d, avg is %f\n", exam.total(), exam.avg()); } + @Override + public void setExam(Exam exam) { + this.exam=exam; + } + }