목록Programing & Coding (86)
S E P H ' S
팩토리(Factory) 패턴 팩토리 패턴은 객체를 생성하는 인터페이스는 미리 정의하되 인스턴스를 만들 클래스의 결정은 서브클래스에서 내리는 패턴이다. 다시 말해 여러 개의 서브 클래스를 가진 슈퍼 클래스가 있을 때 인풋에 따라 하나의 자식 클래스의 인스턴스를 리턴해주는 방식이다. 팩토리 패턴에서는 클래스의 인스턴스를 만드는 시점을 서브 클래스로 미룬다. 이 패턴은 인스턴스화에 대한 책임을 객체를 사용하는 클라이언트에서 팩토리 클래스로 가져온다. 언제 사용하는가? 어떤 클래스가 자신이 생성해야 하는 객체의 클래스를 예측할 수 없을 때 생성할 객체를 기술하는 책임을 자신의 서브 클래스가 지정했으면 할 때 팩토리 패턴에 사용되는 슈퍼 클래스는 인터페이스나 추상 클래스, 혹은 평범한 자바 클래스여도 상관없다. ..
생성(Creational) 패턴 생성 패턴은 인스턴스를 만드는 절차를 추상화하는 패턴이다. 생성 패턴에 속하는 패턴들은 객체를 생성, 합성하는 방법이나 객체의 표현 방법을 시스템과 분리한다. 생성 패턴은 시스템이 상속(Inheritance)보다 복합(composite)방법을 사용하는 방향으로 진화되어 가면서 더욱 중요해지고 있다. 생성 패턴에는 두 가지 중요한 이슈가 있다. 생성 패턴은 시스템이 어떤 Concrete Class를 사용하는지에 대한 정보를 캡슐화 한다. 생성 패턴은 이들 클래스의 인스턴스들이 어떻게 만들고 어떻게 결합하는지에 대한 부분을 완전히 가려준다. 요약하면, 생성 패턴을 이용하여 무엇이 생성되고, 누가 이것을 생성하고, 어떻게 생성되는지 언제 생성할 것인지 결정하는 것에 대한 유연성..
디자인 패턴은 객체지향적 프로그래밍을 위한 설계 기법 중 하나이다. '객체지향적'으로 프로그램을 설계한다는 것은 쉬운 일이 아니다. 지금 당장 요구되는 문제를 해결하면서 추후에 발생할 수 있는 문제나 추가적인 요구사항이 생겼을 때 유연하게 수용하고 변경할 수 있도록 설계되어야 하기 때문이다. 이를 고려하기 위해 SOLID 원칙이나 여러 객체지향적 소프트웨어 설계 방법론을 바탕으로 기존 환경 내에서 반복적으로 일어나는 문제들을 어떻게 풀어나갈 것인지 정의해놓은 일종의 솔루션이 바로 디자인 패턴이다. 재사용이 가능한 설계는 선택하고, 재사용을 방해하는 설계는 배제하도록 도우며 이미 만든 시스템의 유지보수나 문서화도 개선할 수 있으며 클래스의 명세도 정확히 하고, 객체 간 상호작용 또는 설계 의도까지 명확히 ..
사실 이 포스팅의 내용은 Java 뿐만이 아닌 거의 모든 프로그래밍 언어가 메모리를 사용하는 방식이라고 봐도 무방하다. 이후 지속적으로 포스팅할 Java의 메모리 사용 방식에 대해 정리하기 전에 다루는 포스팅이라고 생각하고 정리해볼 것이다. 지역 변수와 메모리 변수는 스태틱 영역, 스택 영역, 힙 영역 세군데 모두에 존재한다. 하지만 각기 다른 목적을 가진다. 그래서 지역 변수, 클래스 멤버 변수, 객체 멤버 변수로 다르다. 지역 변수 : 스택 영역에 존재. 스택 프레임이 사라지면 마찬가지로 사라진다. 클래스 멤버 변수 : 스태틱 영역에 존재. 스태틱 영역에 한 번 자리 잡으면 JVM이 종료될때 까지 고정(static)된 상태로 존재. 객체 멤버 변수 : 힙 영역에 존재. 객체 멤버 변수들은 객체와 함께..