Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
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
Tags
more
Archives
Today
Total
관리 메뉴

햄발

패턴 본문

Java

패턴

햄발자 2024. 7. 3. 16:37

 

 

싱글톤 패턴

package useful.ch04;

/**
 * 디자인 패턴 살펴 보기 
 * - 싱글톤 패턴이 뭘까? 
 * 
 * 1. 생성자를 priavte 으로 만든다.
 * 2. static 변수를 활용해서 내부에서 객체를 생성하고 주소값을 할당
 * 3. 외부에서 유일하게 참조할수 있는 public 메서드를 제공한다.   
 */
public class Company {

	//2. static 변수 활용 데이터 타입 선언  
	private static Company company;
	
	// 1. 생성자에 접근제어 지시자를 private 로 변경하면
	// 외부에서 기본 생성자를 호출 할 수 없다. 
	private Company() {	}
	
	//3. 외부에서 접근 가능한 메서드를 만들어 준다. 
	public static Company getInstance() {
		if(company == null) {
			company = new Company();
		}
		return company; 
	}	
}

package useful.ch04;

public class CompanyTest {

	public static void main(String[] args) {
		 
		// 생성 불가 
		//Company company = new Company();
		
		// 고민! Company 객체를 어떻게 접근 할 수 있을까?

		// A클래스에서 활용 
		Company company = Company.getInstance();
		System.out.println(company);
		
		// B클래스에서 활용 
		Company company2 = Company.getInstance();
		System.out.println(company2);
		
		
	} // end of main 

} // end of class 

 

 

 


 

 

템플릿 메서드 패턴

 

추상 메서드나 구현 된 메서드를 활용하여 코드의 흐름(시나리오)를 정의하는 패턴을 말한다.

 

 

 

 

package useful.ch04;

public abstract class Car {

	void startCart() {
		System.out.println("시동을 켭니다");
	}
	
	abstract void drive();
	
	abstract void stop();
	
	void turnOff() {
		System.out.println("시동을 끈다");
	}
	
	// 템플릿 메서드 패턴에 핵심 !!
	// 메서드 앞에 final 키워드를 사용하다면 : 하위 클래스에서 재정의 할 수 없다. 
	final void run() {
		// 실행에 흐름 만들어 보기
		startCart();
		drive();
		stop();
		turnOff();
	}
	
}

package useful.ch04;

public class AICar extends Car {

	@Override
	void drive() {
		System.out.println("AI car 자율주행을 합니다.");
		System.out.println("스스로 방향을 바꿉니다");
	}

	@Override
	void stop() {
		System.out.println("자동으로 자동차를 멈춥니다");
		System.out.println("위험을 감지해서 급제동을 합니다");
	}

}

package useful.ch04;

public class ManualCar extends Car {

	@Override
	void drive() {
		System.out.println("사람이 운전을 합니다");
	}

	@Override
	void stop() {
		System.out.println("브레이크를 밟아서 정지를 합니다");
	}

}

'Java' 카테고리의 다른 글

배열 활용 (객체 만들기)  (0) 2024.07.04
자료구조  (1) 2024.07.03
래퍼 클래스  (0) 2024.07.03
파싱 (JSON Parsing)  (1) 2024.07.03
공공데이터포탈 사용  (0) 2024.07.03