java 48

전략 패턴(strategy pattern)

정의[위키피디아] 전략 패턴(strategy pattern) 또는 정책 패턴(policy pattern)은 실행 중에 알고리즘을 선택할 수 있게 하는 행위 소프트웨어 디자인 패턴이다. 전략 패턴은 특정한 계열의 알고리즘들을 정의하고 각 알고리즘을 캡슐화하며 이 알고리즘들을 해당 계열 안에서 상호 교체가 가능하게 만든다. 전략은 알고리즘을 사용하는 클라이언트와는 독립적으로 다양하게 만든다.[1] 전략은 유연하고 재사용 가능한 객체 지향 소프트웨어를 어떻게 설계하는지 기술하기 위해 디자인 패턴의 개념을 보급시킨 디자인 패턴(Gamma 등)이라는 영향력 있는 책에 포함된 패턴들 가운데 하나이다. 디자인 패턴의 꽃이라고 하는 전략패턴의 3가지 요소 - 전략 메서드를 가진 전략 객체 - 전략 객체를 사용하는 컨텍..

팩토리 메서드 패턴(Factory method pattern)

정의[위키피디아] 팩토리 메서드 패턴(Factory method pattern)은 객체지향 디자인 패턴이다. Factory method는 부모(상위) 클래스에 알려지지 않은 구체 클래스를 생성하는 패턴이며. 자식(하위) 클래스가 어떤 객체를 생성할지를 결정하도록 하는 패턴이기도 하다. 부모(상위) 클래스 코드에 구체 클래스 이름을 감추기 위한 방법으로도 사용한다. 예제를 보며 이해하기 1. 객체를 반환하는 추상 클래스 Animal.java public abstract class Animal { // 추상 팩터리 메서드 abstract AnimalToy getToy(); } 2. Animal 클래스의 return 객체 AnimalToy.java // 팩터리 메서드가 생성할 객체의 상위 클래스 public ..

템플릿 메소드 패턴(template method pattern)

정의[위키피디아] 템플릿 메소드 패턴(template method pattern)은 소프트웨어 공학에서 동작 상의 알고리즘의 프로그램 뼈대를 정의하는 행위 디자인 패턴이다.[1] 알고리즘의 구조를 변경하지 않고 알고리즘의 특정 단계들을 다시 정의할 수 있게 해준다 템플릿 메소드 패턴 - 위키백과, 우리 모두의 백과사전 템플릿 메소드 패턴(template method pattern)은 소프트웨어 공학에서 동작 상의 알고리즘의 프로그램 뼈대를 정의하는 행위 디자인 패턴이다.[1] 알고리즘의 구조를 변경하지 않고 알고리즘의 특정 단 ko.wikipedia.org 예제를 보며 이해하기 1. Dog 와 Cat 클래스가 아래와 같이 존재한다. - 아래 2개의 클래스는 우는 소리 (멍멍 , 야옹 야옹)를 제외하고는 ..

싱글톤 패턴(Singleton Pattern)

전에 올린 포스팅 참고 : https://old-developer.tistory.com/49?category=931274 Java Application - 싱글톤 패턴(Singleton pattern) 학습목표 - 1. OOP 에서 싱글톤의 개념을 정의하고 이해한다. - 2. 이해한 개념을 Java 코드로 구현할 수 있다. * 참고 - 구글 검색, 구글 이미지, 유투브 : www.youtube.com/watch?v=5jgpu9-ywtY youngji.. old-developer.tistory.com 이전에 심도있게 스터디한 내용이라 , 이번에는 책 내용만 정리해봄. 싱글톤 패턴 [위키피디아] 소프트웨어 디자인 패턴에서 싱글턴 패턴(Singleton pattern)을 따르는 클래스는, 생성자가 여러 차례 ..

데코레이터 패턴 (Decorator Pattern)

정의[위키피디아] 데코레이터 패턴(Decorator pattern)이란 주어진 상황 및 용도에 따라 어떤 객체에 책임을 덧붙이는 패턴으로, 기능 확장이 필요할 때 서브클래싱 대신 쓸 수 있는 유연한 대안이 될 수 있다. 정의[쉬운버전] 데코레이터는 원본에 장식을 더하는 패턴이다. 프록시 패턴 구현 방법이 같지만 다음과 같은 차이점이 있다. 프록시 패턴 vs 데코레이터 패턴 프록시 패턴 - 클라이언트에 최종적으로 리턴되는 반환값을 그대로 전달한다. 데코레이터 패턴 - 클라이언트가 받는 반환값에 장식을 덧입힌다. 프록시 패턴과 동일하게 OCP, DIP 원칙을 구현한다. 소스코드로 이해하기 public interface IService { public String runSomething(); } -------..

String 에 대한 고찰

String 객체 타입은 Java 언어에서 특혜를 심하게 받고 있는 객체이다. 그만큼 사용 빈도가 많다는 말씀.. ■ Java 문서에서의 정의 The String class represents character strings. All string literals in Java programs, such as "abc", are implemented as instances of this class. Strings are constant; their values cannot be changed after they are created. String buffers support mutable strings. Because String objects are immutable they can be shared. ..

== equals 무엇이 다른 것인가 ??

이것만 기억하자. == : 7가지 Primitive type (byte, short, int, long, float, double, boolean, char) 에만 사용한다고 기억하자. equals : 모든 객체의 비교에는 equals 만 사용한다고 기억하자. == ( 동일성 identity - 오브젝트를 참조하는 위치(주소)가 같을 경우 ) equals ( 동등성 equality - 해당 인스턴스가 가지고 있는 값이 같을 경우 ) 뭔가 더 심오한 뭔가를 적어서 유레카를 외치고 싶은데.. 더 할말이 없네... 원시타입 7종은 은 == 객체는 equals 끝... 완전 좋은 참고 영상 : https://www.youtube.com/watch?v=6X1jsQQtwmo

Primitive Data Types (원시적인 데이타 타입)

들어가기에 앞서 자바 언어 타입의 정의 - Java documentation 에서의 정의 https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html Primitive Data Types (The Java™ Tutorials > Learning the Java Language > Language Basics) The Java Tutorials have been written for JDK 8. Examples and practices described in this page don't take advantage of improvements introduced in later releases and might use technology ..

Java 2021.06.24

프록시 패턴(proxy pattern)

정의[위키피디아] 프록시 패턴(proxy pattern)은 컴퓨터 프로그래밍에서 소프트웨어 디자인 패턴의 하나이다. 일반적으로 프록시는 다른 무언가와 이어지는 인터페이스의 역할을 하는 클래스이다. 프록시는 어떠한 것(이를테면 네트워크 연결, 메모리 안의 커다란 객체, 파일, 또 복제할 수 없거나 수요가 많은 리소스)과도 인터페이스의 역할을 수행할 수 있다. 정의[쉽게] 단어적의미 Proxy 1.대리[위임](권) 2.대리인 3.명사 격식 또는 전문 용어 (측정·계산하려는 다른 것을 대표하도록 이용하는) 대용물 프록시 패턴은 프로그램에서 대리로 사용할 객체를 만들어서 사용한다. 프록시 패턴은 OCP, DIP 원칙을 구현한다. 우리가 스프링에서 쉽게 볼 수 있는 인터페이스 - 구현체의 관계로 이해된다. 소스코..

어댑터 패턴 (Adapter Patter)

정의 [위키피디아] : 어댑터 패턴(Adapter pattern)은 클래스의 인터페이스를 사용자가 기대하는 다른 인터페이스로 변환하는 패턴으로, 호환성이 없는 인터페이스 때문에 함께 동작할 수 없는 클래스들이 함께 작동하도록 해준다. 정의 [쉽게] 집에서 사용하는 220V 전자 제품을 110V 로 사용하기 위해서는 어댑터가 필요하다. 어떤 제품이든 어댑터만 있으면 동일하게 변환이 가능하다. 이런 어댑터의 기능을 갖게하는 개발 패턴을 어댑터 패턴이라고 한다. 아직 이해가 안된다면, 소스로 이해하자. 어댑터 패턴을 사용하기 이전 ServiceA.java public class ServiceA { public void runServiceA() { System.out.println("ServiceA"); } }..