230501 풀스택 43일차 - 스프링부트 게시판 만들기 SBB

황인성·2023년 5월 2일
0

웹 세상에서 클라이언트는 브라우저

클라이언트는 서버에 접근을 시도(요청 request)

접근 결과에 따라 404, 500 등등 결과 도출

서버에 접근 성공하면 해당 서버에 기록된 로직에 따라 움직임

그리고 다시 클라이언트로 응답함.(응답 response)

요청과 응답이라는 단어에 익숙해져야함..

브라우저에 URL입력 = 요청

자바를 할 떈 구성패턴을 사용했음.

앞으로 다룰 디자인패턴
싱글톤패턴
팩토리패턴

싱글톤패턴 :
하나의 객체에서 그 값이 누적되거나 관리가 되는 패턴
데이터를 계속 지속적으로 어떠한 객체에 만들어짐과 복사되고 그 값들이 계속 유지관리가 되어야 할 때 사용하는 패턴

싱글톤패턴 문제1번(https://wiken.io/ken/12199)

//code.oa.gg/java8/1073
// 싱글톤패턴 1번째 문제
// 문제 : 사람객체를 생성한 후 나이를 22살로 만들어주세요.
// 조건 : 사람 생성자는 수정/추가할 수 없습니다.
// 조건 : 아래와 같이 출력 되어야 합니다.
class Main {
	public static void main(String[] args) {
		사람 a사람;
		
		a사람 = 사람.getInstance(); // static을 사용해서 설계도에 직접 접근할 수 있음.
		a사람.set나이(22);
		
		System.out.println("사람의 나이는 " + a사람.get나이() + "살 입니다.");
		// 출력 : 사람의 나이는 22살 입니다.
	}
}

class 사람 {
	private int 나이;
	
	private 사람() {
	}
	
	// 힌트 : 여기에 메서드 3개 추가해야 합니다.
	public static 사람 getInstance() { // static키워드를 사용한 getter로 객체를 인스턴스화 해줌.
	    사람 a사람 = new 사람();
	    return a사람;
	}
	public void set나이 (int age) { 
		this.나이 = age;
	}
	public int get나이 () { 
		return this.나이;
	}
}

싱글톤패턴 문제2번(https://wiken.io/ken/12199)

//code.oa.gg/java8/1075
// 싱글톤패턴 2번째 문제
// 문제 : 아래코드가 실행되도록 해주세요.

class Main {
	public static void main(String[] args) {
		사람[] 사람들 = new 사람[5];
		사람들[0] = 사람.get사람();
		사람들[1] = 사람.get사람();
		사람들[2] = 사람.get사람();
		사람들[3] = 사람.get사람();
		사람들[4] = 사람.get사람();
		
		System.out.println("실행완료");
	}
}
class 사람 {
	private 사람 () {
	}
	public static 사람 get사람 () {
		return new 사람();
	}
}

싱글톤패턴 문제3번(https://wiken.io/ken/12199)

//code.oa.gg/java8/1077
// 싱글톤패턴 3번째 문제
// 문제 : 아래코드가 실행되도록 해주세요.

class Main {
	public static void main(String[] args) {
		사람[] 사람들 = new 사람[5];
		사람들[0] = 사람.get사람();
		사람들[1] = 사람.get사람();
		사람들[2] = 사람.get사람();
		사람들[3] = 사람.get사람();
		사람들[4] = 사람.get사람();
		
		for ( int i = 0; i < 사람들.length; i++ ) {
			사람들[i].자기소개();
		}
		
		/*
		// 출력
		저는 1번째 사람입니다.
		저는 2번째 사람입니다.
		저는 3번째 사람입니다.
		저는 4번째 사람입니다.
		저는 5번째 사람입니다.
		*/
	}
}
class 사람 {
	private int 번호;
	static private int 사람수;
	
	static {
		사람수 = 0;
	}
	private 사람 (int 번호) {
		this.번호 = 번호;
	}
	static 사람 get사람 () {
		사람 a사람 = new 사람(사람수 + 1);
		사람수++;
		return a사람;
	}
	public void 자기소개 () {
		System.out.println("저는" + this.번호 + "번째 사람입니다.");
	}
}

싱글톤패턴 문제4번(https://wiken.io/ken/12199)

//code.oa.gg/java8/1079
// 싱글톤패턴 4번째 문제
// 문제 : 아래코드가 실행되도록 해주세요.
// 조건 : 사람 객체의 수는 3을 넘을 수 없습니다.

class Main {
	public static void main(String[] args) {
		사람[] 사람들 = new 사람[7];
		사람들[0] = 사람.get사람();
		사람들[1] = 사람.get사람();
		사람들[2] = 사람.get사람();
		사람들[3] = 사람.get사람();
		사람들[4] = 사람.get사람();
		사람들[5] = 사람.get사람();
		사람들[6] = 사람.get사람();
		
		for ( int i = 0; i < 사람들.length; i++ ) {
			사람들[i].자기소개();
		}
		
		/*
		// 출력
		저는 1번째 사람입니다.
		저는 2번째 사람입니다.
		저는 3번째 사람입니다.
		저는 3번째 사람입니다.
		저는 3번째 사람입니다.
		저는 3번째 사람입니다.
		저는 3번째 사람입니다.
		*/
	}
}
class 사람 {
	private static int 사람수;
	
	private static int 최대_사람수;
	
	private static 사람 a사람;
	
	private int 번호;
	
	private 사람(int 번호) {
		this.번호 = 번호;
	}
	static {
		사람수 = 0;
		최대_사람수 = 3;
	}
	static 사람 get사람() {
		if(사람수 < 최대_사람수) {
		a사람 = new 사람(사람수 + 1);
		사람수++;
		}
		return a사람;
	}
	void 자기소개() {
		System.out.println("저는" + this.번호 + "번째 사람입니다.");
	}
	
}

결론 : 싱글톤패턴은 모든 객체끼리 값을 공유하기 위해서 사용한다.

ResponseBody가 있으면
Header도 Footer도 있는지?

'TCP/IP가 보이는 그림책' 이 책 좋음

헤더는 웹 연결시에 식별자역할

profile
문제 해결을 위해 끊임없이 파고드는 걸 좋아합니다.

0개의 댓글