본문 바로가기

Java22

전략 패턴(Strategy Pattern) 전략 패턴 각 객체들이 할 수 있는 행위들을 각 전략클래스에 생성하고, 각 전략클래스는 하나의 추상적인 접근점 (인터페이스)를 상속받아 각각 자신의 행위들을 정의한다. 행위를 변경하고 싶을때마다 전략을 바꾸는 코드로 유연하게 개발할 수 있다. 예제 public interface Weapon { public void attack(); } public class knife implements Weapon { @Overide public void attack() { System.out.println("검 공격"); } } public class Ax implements Weapon { @Overide public void attack() { System.out.println("도끼 공격"); } } publi.. 2020. 8. 23.
상속 괜찮은가? (컴포지션) 부모클래스 class Person{ void eat(String food){ System.out.println("먹다"); } void eatAll(String[] foods){ for (String a: foods) { eat(a); } } } 상속 받은 자식 클래스 class Grandfather extends Person { private int count = 0; @Override void eat(String food) { count++; super.eat(food); } @Override void eatAll(String[] foods) { count = count + foods.length; super.eatAll(foods); } public int getCount() { return cou.. 2020. 8. 10.
제네릭의 모든것 자바5부터 제네릭 타입이 새로 추가되었다. 제네릭을 이용함으로써 잘못된 타입이 사용될 수 있는 문제를 컴파일 과정에서 제거할 수 있게 되었다. 제네릭을 정확하게 알고있고 클래스를 설계한다면 클래스는 더욱 이쁘고 , 깔끔해 질 수있다고 확신한다!! 대표적인 장점 2가지 컴파일 시 강한 타입 체크를 할 수 있다. 타입 변환(casting)을 제거한다. 제네릭 제한된 타입 파라미터 class Fruit { public String toString(){ return "Fruit"; } } class Apple extends Fruit{ public String toString(){ return "Apple"; } } class Banana extends Fruit{ public String toString(){.. 2020. 8. 8.
객체직렬화 ? 객체직렬화란 무엇인가? 자바 시스템 내부에서 사용되는 객체 또는 데이터를 외부의 자바 시스템에서도 사용할 수 있도록 바이트(byte) 형태로 데이터 변환 하는 기술과 바이트로 변환된 데이터를 다시 객체로 변환하는 기술(역직렬화)를 이야기합니다. 즉, 보내는쪽은 객체를 잘게잘게 쪼개서 보내고 받는쪽은 쪼개진것을 합쳐서 객체를 만든다 ​ java.io.serialization 인터페이스를 상속받은 객체는 직렬화 할 수 있는 기본 조건을 충족! 예시에서 InfoDTO라는 class에 인터페이스를 구현했다! ​ 자바가상기계 (JVM)은 직렬화와 역직렬화를 하는 시점의 클래스에 대한 버전 번호를 부여합니다. 만약 그 시점에 클래스의 정의가 바뀌어 있다면 새로운 버전 번호를 할당합니다. 그래서 직렬화할 때의 버전 .. 2020. 2. 23.