목록전체 글 (16)
The Office Lover
확장할 때는 개방, 수정할 때는 폐쇄 개방 폐쇄 원칙은 코드의 확장성 문제로 볼 수 있다. 추후 변경되는 요구 사항에 대응할 때 코드가 확장할 때는 개방, 수정할 때는 폐쇄될 수 있다면 해당 코드의 확장성이 매우 뛰어나다는 것을 의미한다. 확장 가능한 코드를 작성하려면 확장, 추상화, 캡슐화에 대해 인식하고 있는 것이 매우 중요하다. 코드 작성시 현재 코드에 앞으로 요구 사항이 추가될 가능성에 대해 더 많은 시간을 할애할 필요가 있다. 미리 설계해 확장 가능하도록 미리 구성하면, 코드의 전체 구조를 변경할 필요 없이 새로운 코드가 유연하게 추가되며, 코드 수정을 최소화하면서 요구 사항을 만족시킬 수 있다. 코드의 변경 가능한 부분과 변경할 수 없는 부분을 잘 식별 변경되는 사항을 기존 코드와 분리할 수 ..
팩토리 패턴(factory pattern)이란? 객체를 생성하기 위한 인터페이스를 정의하는데, 어떤 클래스의 인스턴스를 만들지는 서브클래스에서 결정하게 한다 즉, 팩토리 메서드 패턴을 이용하면 클래스의 인스턴스를 만드는 일을 서브클래스에게 맡기는 것 자바코드로 이해하기 핵심은 모두 같은 부모 클래스를 상속한다는 점 public interface Shape { void draw(); } public class Rectangle implements Shape { @Override public void draw() { System.out.println("Inside Rectangle :: draw() method."); } } public class Square implements Shape { @Overri..
인터페이스의 정의 인터페이스는 속성을 포함할 수 없다. 인터페이스는 메서드를 선언할 수 있으나, 실제 코드 구현을 포함할 수 없다. 클래스가 인터페이스를 구현할 때는 인터페이스에 선언된 모든 메서드를 구현해야 한다. Java 1.8 이후부터는 인터페이스의 메서드에 코드 구현이 포함될 수 있으며, 인터페이스에 정적 멤버 변수가 포함될 수 있다. 하지만, Java를 제외하면 인터페이스는 위의 특성을 그대로 간직하고 있다. 본질적으로 인터페이스는 프로토콜 또는 규약의 집합으로, 사용자에게 제공되는 기능의 목록이다. 코드에서 구현되는 인터페이스는 구현이 아닌 인터페이스 기반이라는 설계 사상에 프로그래밍 언어의 인터페이스 또는 추상 클래스로 이해될 수 있다. 이 설계 사상을 적용하면 코드 품질을 효과적으로 향상할..
메시지 큐(Message Queue)란? 프로세스(프로그램) 간에 데이터를 교환할 때 사용하는 통신 방법 중에 하나로 더 큰 개념으로는 MOM(Message Oriented Middleware : 메시지 지향 미들웨어 이하 MOM)을 의미 MOM이란 비동기 메시지를 사용하는 프로그램 간의 데이터 송수신을 의미하는데 MOM을 구현한 시스템을 MQ라고 한다. MQ는 작업을 늦출 수 있는 유연성을 제공한다. 메시지를 교환할 때 AMQP(Advanced Message Queuing Protocol 이하 AMQP)를 이용한다. AMQP는 ISO응용 계층의 MOM 표준으로 JMS(Java Message Service)와 비교되는데 JMS는 MOM을 자바에서 지원하는 표준 API다. JMS는 다른 Java Appli..