본문 바로가기

분류 전체보기

(21)
Decorator Pattern Decorator Pattern 이란? 데코레이터 패턴에서는 객체에 추가적인 요건을 동적으로 첨가합니다. 데코레이터는 서브클래스를 만드는 것을 통해서 기능을 유연하게 확장할 수 있는 방법을 제공합니다. Decorator Pattern 의 특징 데코레이터의 수퍼 클래스는 자신이 장식하고 있는 객체의 수퍼클래스와 같습니다. 한 객체를 여러 개의 데코레이터로 감쌀 수 있습니다. 데코레이터는 자신이 감싸고 있는 객체와 같은 수퍼클래스를 가지고 있기 때문에 원래 객체가 들어갈 자리에 데코레이터 객체를 집어넣어도 상관 없습니다. 데코레이터는 자신이 장식하고 있는 객체에게 어떤 행동을 위임하는 것 외에 원하는 추가적인 작업을 수행할 수 있습니다. 객체는 언제든지 감쌀 수 있기 때문에 실행중에 필요한 데코레이터를 마음..
Observer Pattern Observer Pattern 이란? 옵저버 패턴에서는 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들한테 연락이 가고 자동으로 내용이 갱신되는 방식으로 일대다 의존성을 정의합니다. 옵저버 패턴의 의도는 객체 사이에 일 대 다의 의존 관계를 정의해 두어, 어떤 객체의 상태가 변할 때 그 객체에 의존성을 가진 다른 객체들이 그 변화를 통지받고 자동으로 갱신될 수 있게 만드는 것입니다. 일대다 관계 옵저버 패턴에서 상태를 저장하고 지배하는 것은 Subject 객체입니다. 따라서 상태가 들어있는 객체는 하나만 있을 수 있습니다. 하지만 Observer는 반드시 상태를 갖고 있어야 하는 것은 아닙니다. 따라서 Observer는 여러 개가 있을 수 있으며, 상태가 바뀌었다는 것을 알려주는 Subject에..
디자인 패턴 23가지 디자인패턴이란? 소프트웨어를 개발하다 보면 특정한 상황에서 특정한 문제가 반복적으로 발생하곤 합니다. 디자인 패턴은 이렇게 반복적으로 발생하는 문제들을 해결하기 위해 만들어진 패턴입니다. 디자인패턴의 종류 디자인 패턴 23가지는 크게 생성(Creational), 구조(Structural), 행위(Behavioral) 3가지로 분류할 수 있습니다. 생성 구조 행위 팩토리 메소드 (Factory Method) 추상 팩토리 (Abstract Factory) 빌더 (Builder) 프로토타입 (Prototype) 싱글톤 (Singleton) 어댑터 (Adapter) 브릿지 (Bridge) 컴퍼지트 (Composite) 데코레이터 (Decorator) 파사드 (Facade) 플라이웨이트 (Flyweight) 프록..
자바 Object 클래스 탐구 자바 Obejct 클래스에 대해 탐구해보도록 하겠습니다. java.lang.Object 클래스는 자바에서 최상위 클래스로 모든 클래스는 Object 클래스를 상속받습니다. 따라서, 모든 클래스는 Object 클래스의 메소드를 사용할 수 있고 override 할 수도 있습니다. 그럼, 몇 가지 메소드들을 자세히 알아보겠습니다. 1. toString() - 기본 동작: 객체의 해시코드 출력 - override 목적: 객체의 정보를 문자열 형태로 표현하고자 할 때 public class User { private String name; private int age; public User(String name, int age) { this.name = name; this.age = age; } } > Task ..
StringBuilder와 StringBuffer String 과의 차이 String으로 문자열을 생성하면 스트링 풀이라는 곳에 메모리가 잡히게 됩니다. 스트링 풀의 문자열은 변경할 수 없기 때문에, 이 문자열에 + 등 연산을 하게되면 스트링 풀에 매번 새로운 문자열이 생성됩니다. 이러한 메모리 비효율성 때문에 문자열에 여러번 연산을 해야 한다면 StringBuilder와 StringBuffer를 사용해야 합니다. StringBuilder와 StringBuffer은 String 과 비교하였을 때, 가변성이라는 특징이 있습니다. StringBuilder와 StringBuffer는 문자열을 다룰 때, Heap 영역에 버퍼를 만들어서 문자를 다룹니다. 그렇기 때문에 문자열에 연산을 해도 새로운 문자열이 스트링 풀에 새로 생기지 않습니다. 그렇다면 두 클래스의..