본문 바로가기

Java/Java Story5

[Java] Strategy Pattern(전략패턴)[feat. Interface] 안녕하세요~ 잭코딩입니다! 이번에는 인터페이스의 활용에 대해 글을 써보려고 합니다! 요즘 글쓴이는 우아한테크캠프 Pro라는 교육과정을 듣고 있습니다 이번 미션에서 Strategy Pattern을 적용해보라는 코드리뷰를 받아서 수정해보았습니다 Interface를 이용해 전략 패턴을 사용하였는데 어떤 점에서 코드가 좋아졌을까요? Strategy Pattern(전략 패턴) ? 전략 패턴이란 무엇일까요? 같은 기능이지만 서로 다른 전략을 가진 클래스들을 각각 캡슐화하여 상호교환할 수 있도록 하는 패턴입니다 Strategy Pattern 예시 (feat. CoffeeMachine) 예를 들어서 설명해보겠습니다 커피머신에는 각자가 커피를 내리는 전략이 있습니다 '커피를 내린다'라는 같은 기능이지만 서로 다른 전략으.. 2020. 12. 6.
[Java] First Class Collection(일급 컬렉션) 안녕하세요~ 잭코딩입니다! 이번에는 일급 컬렉션에 대해 글을 써보려고 합니다! 요즘 글쓴이는 우아한테크캠프 Pro라는 교육과정을 듣고 있습니다 이번 미션에서 일급 컬렉션을 적용해보라는 코드리뷰를 받아서 관련 내용을 학습할 수 있었습니다 일급 컬렉션을 쓰면 무엇이 좋은지 살펴볼까요? First Class Collection(일급 컬렉션) ? 간단히 설명하면 Collection들을 한번 Wrapping한 컬렉션입니다 예를 들어 Car라는 객체가 있습니다 public class Car { private int position; public void move(MovingStrategy movingStrategy) { if (movingStrategy.isMove()) { position++; } } public.. 2020. 12. 6.
[Java] Shallow copy(얕은 복사) vs Deep copy(깊은 복사) 안녕하세요~ 잭코딩입니다! 이번 내용에서는 Shallow copy(얕은 복사)와 Deep copy(깊은복사)를 살펴봅시다 코드를 짜다보면 객체를 복사해야할 경우가 생깁니다 이 때 실수로 복사를 잘못하면 큰 이슈가 생길 수 있습니다 Shallow copy(얕은 복사) vs Deep copy(깊은 복사) Shallow copy(얕은 복사)는 '주소값'을 복사합니다 (즉, 참조하고 있는 실제값은 같습니다) Deep copy(깊은 복사)는 '실제값'을 새로운 메모리 공간에 복사합니다 (즉, 실제값이 다릅니다) 한번 코드와 그림을 통해 알아볼까요? 우선 이름과 돈을 가진 JackCoding 클래스를 만듭니다 public class JackCoding { String name; long money; public J.. 2020. 11. 30.
[Java] Java는 Call by value? Call by reference? 안녕하세요~ 잭코딩입니다! 이번 내용에서는 Call by value와 Call by reference를 살펴보고 Java는 어떠한 방식인지 예제를 통해 알아볼까요? 자바에서 메서드(함수)를 정의한 후 필요한 변수 or 객체를 인자 값으로 받아온다 이때, 인자 값을 어떤 식으로 받아 올 것인지에 대한 방식이다 Call by value (값에 의한 호출) '값'을 넘겨주는 호출 방식 Call by reference (참조에 의한 호출) '참조값(주소 혹은 포인터)을 넘겨주는 호출 방식' 1. 자바의 기본형(Primitive Type)의 경우는 Call by value이다 (기본형 : boolean, char, byte, short, int, long, float, double) public class Mai.. 2020. 9. 18.
[Java] String 객체 생성 2가지 방식의 차이점 (new String vs "") 안녕하세요~ 잭코딩입니다! new String("") vs "" 이번 내용에서는 String 객체를 생성하는 2가지 방식과 그 차이점을 설명하겠습니다 String은 다른 일반 객체와 달리 Heap 영역 안에 String Pool 영역에서도 관리해주는데, 그와 관련된 내용을 정리해볼게요! 평소에 String으로 객체를 생성할 때, String name = "jackcoding" 단순히 이렇게 ""(큰 따옴표)로 생성했다. 그런데 이펙티브자바 ITEM6을 공부하면서, new String("jackcoding") 이렇게 생성하면 성능에 좋지 않다는 내용을 봤다. ""로 생성하면 한번만 객체가 생성되지만, new로 생성하면 객체가 계속 생성된다고 한다 https://jackjeong.tistory.com/12'.. 2020. 9. 6.