Java/Design Pattern

Java/Design Pattern

옵저버 패턴 Observer

더보기 객체의 상태 변화를 관찰하는 옵저버 들의 목록을 객체에 등록 상태 변화가 있을 때마다 메서드를 통해 객체가 직접 각 옵저버에게 통지하도록 한다 - 주로 분산 이벤트 핸들링 시스템을 구현하는데 사용 객체의 상태가 변할 때 연관된 객체들에게 알림을 보내는 패턴 장점 실시간으로 한 객체의 변경사항을 다른 객체에 전파할 수 있다. 느슨한 결합으로 시스템이 유연하고 객체간의 의존성 제거 가능 public class Observer { public String msg; public void receive(String msg){ System.out.println(this.msg + "에서 메시지를 받음 : " + msg); } } public class User1 extends Observer{ public ..

Java/Design Pattern

빌더 패턴 Builder

- 생성패턴의 한 종류로 서로 다른 표현이라도 이를 생성할 수 있는 동일한 절차를 제공 아래의 두 가지 종류의 클래스로 나눈다. 복잡한 객체를 생성하는 방법을 정의하는 클래스 표현하는 방법을 정의하는 클래스로 분리 장점 인스턴스를 생성할 때 인자를 선택적으로 가독성 좋게 넘길 수 있다. 인자의 순서에 상관이 없고, 불필요한 생성자를 만들지 않는다. public class Computer { private int serialNumber; private String model; private String vender; private String cpu; private int ram; private int disk; private String graphicCard; private Computer(int ser..

Java/Design Pattern

컴포짓 패턴 Composite

부분과 전체의 계층을 표현하기 위한 객체들을 모아서 트리 구조로 구성하는 패턴 사용자에게 개별객체와복합 객체를 모두 동일하게 다룰 수 있도록 함 예제 : [Design Pattern] 컴퍼지트 패턴이란 - Heee's Development Blog (gmlwjd9405.github.io) all4land_junior/Week01/src/designPattern/composite at main · keartt/all4land_junior (github.com)

Java/Design Pattern

프로토타입 패턴 Prototype

객체를 생성하는데 비용? 시간이 많이 들고, 비슷한 객체가 이미 있는 경우 사용되는 패턴 원본 객체를 새로운 객체에 복사하여 필요에 따라 수정함 clone 메소드를 사용함 생성 패턴 clone 메소드를 사용 -> 생성하고자 하는 객체에 clone 에 대한 Override 필요 반드시 생성하고자 하는 객체의 클래스에 clone 메소드가 정의되어 있어야 함 [디자인패턴] 프로토타입패턴(Prototype Pattern) (velog.io) package designPattern.prototype; import java.util.ArrayList; import java.util.List; public class Employees implements Cloneable { private List empList; p..

Java/Design Pattern

템플릿 메소드 패턴

작업을 처리하는 일부분을 서브 클래스로 캡슐화해 전체 일을 수행하는 구조는 바꾸지 않으면서 특정 단계에서 수행하는 내역을 바꾸는 패턴 전체적으로는 동일하면서 부분적으로는 다른 구문으로 구성된 메서드의 코드 중복을 최소화 할 때 유용하다. 다른 관점에서 보면 동일한 기능을 상위 클래스에서 정의하면서 확장/변화가 필요한 부분만 서브 클래스에서 구현할 수 있도록 한다. - 상위 클래스에서는 공통적, 하위 클래스에서는 다양하게 코딩을 한다. 즉, 확장적이고 공통적인건 상위 클래스에서 정의하고 그렇지 않은 것은 imterface로 하위 클래스에서 정의 - Abstract class --> Concrete class 템플릿 메소드 package designPattern.TemplateMethod; public ab..

Java/Design Pattern

추상 팩토리 패턴

추상팩토리 - 생산적인 디자인 패턴 중 하나로써 좀 더 factory를 좀 더 생산적으로 만들어 낼 수 있다는 점외에는 factory pattern과 매우 비슷 -인터페이스 보다는 구조체에 접근할 수 있는 코드를 제공한다. -확장에 매우 용의한 패턴으로 쉽게 다른 서브 클래스들을 확장할 수 있다. -기존 팩토리 패턴의 if-else 로직에서 벗어날 수 있게 해준다. package designPattern.abstractFactory; public class Computer extends Product { private String name; private int price; public Computer (String name, int price) { this.name = name; this.price =..

Java/Design Pattern

싱글톤 패턴 Singleton

객체의 인스턴스가 오직 1개만 생성되도록 하는 패턴 생성자는 외부에서 호출이 불가하도록 private 으로 지정한다. > 인스턴스를 오직 한개로만 가져감으로써 메모리 측면에서의 장점 최초 한번의 new 연산자를 통해 고정된 메모리 영역을 사용하기에 메모리 낭비를 방지한다. 이미 생성된 인스턴스를 활용함으로 속도에도 이점이 있다. > 클래스 간 데이터 공유가 쉽다 싱글톤의 인스턴스는 전역으로 사용되기에 다른 클래스의 인스턴스들이 접근해 사용이 가능하다. 하지만 여러 클래스 인스턴스에서 싱글톤 인스턴스에 동시에 접근할 경우 동시성 문제 발생 가능 유의 구현 코드가 많이 필요? 자원을 공유하기에 테스트가 어렵다 > 테스트가 격리된 환경에서 후행되면 매번 인스턴스 상태를 초기화 해줘야 함 그렇지 않으면 전역에서..

keartt
'Java/Design Pattern' 카테고리의 글 목록