일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- ps
- MariaDB
- Project
- 스프링
- JDK
- React
- IntelliJ
- 백준
- 프로젝트
- SpringBoot
- Java
- 자바
- 코테
- spring
- 디자인패턴
- 자취
- 입출력
- gradle
- 취준생
- spring boot
- MVC
- 코딩테스트
- jdk11
- AWS
- JPA
- 공유DB
- coding test
- 팀프로젝트
- javascript
- Controller
- Today
- Total
목록Concept/Design Pattern (12)
Tech Collection
옵저버 패턴 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들한테 연락이 가고 자동으로 내용이 갱신되는 방식 일대다(1:n) 의존성을 정의한다. Observable (1) : Observer (n) 순서 상관 없이 연락 한다. (느슨한 결합) import java.util.Observable; public class Seeker extends Observable { public Seeker() { } public void alarm() { setChanged(); notifyObservers(); } } import java.util.Observable; import java.util.Observer; public class Target extends Observer { Observable obs..
싱글톤 패턴 해당 클래스의 인스턴스가 최대 한 개까지만 만들어진다. 유일한 인스턴스를 어디서든지 접근할 수 있도록 할 수 있다. Java에서는 private 생성자와 정적메소드, 정적 변수를 사용 Singleton Pattern 형식 public class Test { // 정적 변수 private static Test t; // private 생성자 private Test() { } // 정적 메소드 public static Test getInstance() { if(t == null) { t = new Test(); } return t; } } 다중 스레드를 사용하는 어플리케이션에서는 속도와 자원 문제를 파악해보고 적절한 구현법을 사용해야 한다. → DCL (Double-Checking Locking..
스트래티지 패턴 알고리즘군을 정의하고 각각을 캡슐화하여 교환해서 사용할 수 있도록 만든다. 스트래티지를 활용하면 알고리즘을 사용하는 클라이언트와는 독립적으로 알고리즘을 변경할 수 있다. public interface FlyBehavior { public void fly(); } public class FlyWithWings implements FlyBehavior { public void fly() { System.out.println("날고 있어요!"); } } public interface QuackBehavior { public void quack(); } public class Quack implements QuackBehavior { public void quack() { System.out.p..
재사용성, 확장성, 관리의 용이성을 갖추어야 한다. 대부분의 패턴은 시스템의 일부분을 나머지 부분과 무관하게 변경하는 방법을 제공한다. 패턴은 다른 개발자들과의 의사소통의 가치를 극대화 시킬 수 있는 전문 용어 역할을 한다. 디자인 원칙 상속보다는 구성을 활용한다. 바뀌는 부분은 캡슐화 한다. 구현이 아닌 인터페이스에 맞춰서 프로그래밍 한다. 서로 상호작용을 하는 객체 사이에는 가능하면 느슨하게 결합하는 디자인을 사용해야 한다. 느슨한 결합을 이용하는 디자인이 훨씬 더 유연하고 변화에 강하다. 클래스는 확장에 대해서는 열려있지만 변경에 대해서는 닫혀 있어야 한다. (OCP) 시스템을 디자인할 때는 닫혀있는 부분이 새로 확장되는 부분하고 확실하게 구분되도록 노력합시다. 추상화된 것에 의존하라, 구상 클래스..