IT/Java

자바 생성자를 통한 의존관계 주입 DI, 메소드를 통한 의존관계 주입 DI

노마드오브 2018. 7. 30. 22:00

package test;


import java.util.ArrayList;

import java.util.Iterator;

import java.util.List;

import java.util.Scanner;

import java.util.Vector;


class Person {

String name;

int age;

String address;

public Person(String name, int age, String address) {

super();

this.name = name;

this.age = age;

this.address = address;

}

// getter & setter

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

public String getAddress() {

return address;

}

public void setAddress(String address) {

this.address = address;

}

// toString()

@Override

public String toString() {

return "Person [name=" + name + ", age=" + age + ", address=" + address + "]";

}

}  // Person class


class PersonManager {

private Scanner scanner;

private List<Person> personList;  // 원본데이터

private List<Person> searchList;  // 검색데이터

public PersonManager() {

}

public PersonManager(Scanner scanner) {

this.scanner = scanner;

}

public Scanner getScanner() {

return scanner;

}

public void setScanner(Scanner scanner) {

this.scanner = scanner;

}

public List<Person> getPersonList() {

return personList;

}

public void setPersonList(List<Person> personList) {

this.personList = personList;

}

public List<Person> getSearchList() {

return searchList;

}

public void setSearchList(List<Person> searchList) {

this.searchList = searchList;

}

// start()

// 선택 >>  

// "1:추가  2:삭제  3:검색  4:목록  0:종료"

public void start() {

Scanner scanner = new Scanner(System.in);

while (true) {

System.out.println("1:추가  2:삭제  3:검색  4:목록  0:종료");

System.out.print(">> ");

int num = scanner.nextInt();

switch (num) {

case 1: add(); break;

// case 2: del(); break;

// case 3: search(); break;

case 4: list(); break;

case 0: System.out.println("프로그램을 종료합니다."); return;

default: System.out.println("없는 명령입니다."); break;

}

} // while

}

// 1번 add()  회원 추가.  리스트에 Person 객체 추가하기

// 이름을 입력하세요: 

// 나이를 입력하세요:

// 주소를 입력하세요: 

// Person객체생성 후 리스트에 추가

public void add () {

System.out.println("이름을 입력하세요 : ");

String name = scanner.next();

System.out.println("나이를 입력하세요 : ");

int age = scanner.nextInt();

System.out.println("주소를 입력하세요 : ");

String addr = scanner.next();

// 생성자를 통한 값 주입

Person person = new Person(name, age, addr);

personList.add(person);

} // add()

// 2번 del()  회원 삭제.  리스트에 해당번째 Person객체 삭제

// 삭제할 인덱스번호: 

// 3번 search()  회원 검색.  검색결과를 검색용리스트에 추가 후 출력

// 4번 list()  회원목록 출력

public void list() {

System.out.println("이름\t나이\t주소");

System.out.println("=========================");

// for (Person p : personList) {

// System.out.println(p.getName() + "\t"

// + p.getAge() + "\t"

// + p.getAddress());

// }

// System.out.println();

Iterator<Person> it = personList.iterator();

while (it.hasNext()) {

Person p = it.next();

System.out.println(p);

}

System.out.println();

} // list()

// 0번  프로그램 종료

}


public class Test9 {


public static void main(String[] args) {

Scanner scanner = new Scanner(System.in);

// PersonManager는 Scanner에 의존하고 있음 -> 포함관계

// 생성자 또는 메소드에 매개변수(인자)로 대입하는 형식으로

// 객체 사이의 의존관계를 주입한다.

PersonManager manager = new PersonManager(scanner); // 생성자를 통한 의존관계 주입 DI

// PersonManager manager = new PersonManager(); 

// manager.setScanner(scanner); // 메소드를 통한 의존관계 주입 DI


manager.setPersonList(new ArrayList<>());

manager.setPersonList(new Vector<>());

manager.start();

} // main()의 끝


}