Iterator Pattern
·
Design Pattern
- 컬렉션의 요소를 순회하는 패턴 - 내부의 표현을 노출시키지 않음 (List, Stack, Tree, Set 등 어떤 컬렉션인지 노출하지 않음) 이터레이터 패턴을 사용하면 접근하는 작업을 컬렉션 객체가 아닌 반복자 객체에서 맡게 됨. 집합체의 인터페이스 구현이 간단해지고, 집합체에서는 반복작업에서 손을 떼고 객체 컬렉션 관리에만 전념할 수 있음. package designpattern.iterator; interface Aggregate { public abstract Iterator iterator(); } interface Iterator { public abstract boolean hasNext(); public abstract Object next(); } class Book { private..
프록시 패턴
·
Design Pattern
프록시 패턴은 대상 객체에 접근하기 전 그 접근에 대한 흐름을 가로채 대상 객체 앞단의 인터페이스 역할을 하는 디자인 패턴이다. 보안, 데이터 검증, 캐싱, 로깅에 사용된다. package designpattern.proxy; interface Subject { String request(); } class RealSubject implements Subject { @Override public String request() { return "Hi!"; } } class Proxy implements Subject { private final RealSubject realSubject = new RealSubject(); @Override public String request() { return rea..
Observer Pattern
·
Design Pattern
- 주체가 어떤 객체의 상태 변화를 관찰하다가 상태 변화가 있을 때마다 옵저바 목록에 있는 옵저버들에게 변화를 알려주는 디자인 패턴 - 주체는 객체의 상태 변화를 보고 있는 관찰자 - 옵저버는 객체의 상태 변화에 따라 전달되는 메서드를 기반으로 추가 변화 사항이 생기는 객체를 의미 package designpattern.observer; import java.util.ArrayList; import java.util.List; import java.util.Observer; // 주체 interface Subject { public void register(Observer obj); public void unregister(Observer obj); public void notifyObservers();..
전략 패턴 - Strategy Pattern
·
Design Pattern
Strategy Pattern - 객체의 행위를 바꾸고 싶은 경우 직접 수정하지 않고 전략이라고 부르는 캡슐화 알고리즘을 컨텍스트 안에서 바꿔주는 것 package designpattern.strategy; import java.util.ArrayList; import java.util.List; interface PaymentStrategy { public void pay(int amount); } class KAKAOCardStrategy implements PaymentStrategy { private String name; private String cardNumber; private String cvv; private String dateOfExpiy; public KAKAOCardStrateg..
Factory Pattern
·
Design Pattern
팩토리 패턴(Factory Pattern) - 객체를 사용하는 코드에서 객체 생성 부분을 떼어내 추상화한 패턴이자 상속 관계에 있는 두 클래스에서, 상위 클래스가 중요한 뼈대를 결정하고 하위 클래스에서 객체 생성에 관한 구체적인 내용을 결정하는 패턴 - 상위 클래스와 하위 클래스가 분리 되기 때문에 느슨한 결합을 지님. - 객체 생성한 인터페이스는 미리 정의하고, 객체 생성은 서브클래스(팩토리)로 위임함 package designpattern.factory; abstract class Coffee { public abstract int getPrice(); @Override public String toString() { return "Hi this coffee is " + this.getPrice();..
디자인 패턴과 Singleton Pattern
·
Design Pattern
디자인 패턴 프로그램 설계시 발생했던 문제들을 객체 간 상호관계를 이용하여 해결할 수 있도록 하나의 규약으로 만들어 놓은 형태 Signleton Pattern - 싱글톤 패턴 : 하나의 클래스에 오직 하나의 인스턴스만 지니는 것. 보통 db연결 모듈에 많이 사용된다. package designpattern.singleton; class Singleton { private static class singleInstanceHolder { private static final Singleton INSTANCE = new Singleton(); } public static Singleton getInstance() { return singleInstanceHolder.INSTANCE; } } public cla..
달팽이 순회2
·
Algorithm/자료 구조 및 개념 정리
import java.util.Scanner; public class Main { public static final int MAX_VAL = 100; // 동 남 서 북 public static int[] dx = new int[]{0, 1, 0, -1}; public static int[] dy = new int[]{1, 0, -1, 0}; public static char[][] arr = new char[MAX_VAL][MAX_VAL]; public static int moveDirection = 0; public static boolean inRange(int x, int y, int n, int m) { return (0
달팽이 순회
·
Algorithm/자료 구조 및 개념 정리
내가 제출한 답: import java.util.Scanner; public class Main { public static final int MAX_SIZE = 100; // 동 남 서 북 public static int[] dx = new int[] {0, 1, 0, -1}; public static int[] dy = new int[] {1, 0 ,-1 , 0}; public static int[][] arr = new int[MAX_SIZE][MAX_SIZE]; public static int moveDir = 1; public static int x = 0; public static int y = 0; public static boolean inRange(int x, int y, int n, i..
Next.js - 인증
·
Web/React & Next.js
JsonWebToken 3단계로 구성되어있음 Issuer Data - 토근이 생성될때 서버에 의해 토큰에 자동으로 추가되는 데이터 Custom Data - 커스텀 데이터, ex) 사용자 정보 Secret Sigining Key - 비밀키를 서버에 설정 => 클라이언트는 해당 정보를 볼 수 없음. 서버만이 해당 정보 볼 수 있음 => 해당 키로 접근 가능한지 서버에서 판단. 키는 토큰에 포함되지 않음. 토큰은 클라이언트 사이드 브라우저에 저장되어 서버의 보호된 리소스에 대한 요청에 첨부됨. Next.js 에서는 토큰 생성 및 유효성 검사등을 안전한 서드파티 패키지에 맡길 수 있다. 설치 명령어는 다음 (구버전) npm install --save-exact next-auth@3 or (최신 버전) npm i..
takoyummy
TakoHub