[JAVA][패스트캠퍼스]자바 입출력 - 그 외 입출력 클래스와 데코레이터 패턴

12869 단어 JavafastcampusJava

그 외 입출력 클래스

  • File 클래스
    - 파일개념을 추상화한 클래스
    - 입출력 기능은 없고 파일의 속성, 경로, 이름 등을 알 수 있음
  • RandomAccessFile 클래스
    - 입출력 클래스 중 유일하게 파일 입출력을 동시에 할 수 있는 클래스
    - 파일 포인터가 있어서 읽고 쓰는 위치의 이동이 가능함
    - 다양한 자료형에 대한 메서드가 제공됨

데코레이터 패턴 (Decorator Pattern)

  • 자바의 입출력 스트림은 데코레이터 패턴을 사용
  • 실제 입출력 기능을 가진 객체(컴포넌트)와 그 외 다양한 기능을 제공하는 데코레이터(보조스트림)을 사용하여 다양한 입출력 기능을 구현
  • 상속보다 유연한 확장성을 가짐
  • 지속적인 서비스의 증가와 제거가 용이함

코딩해보자

데코레이터 패턴을 활용하여 커피를 만들어 봅시다.
아메리카노
라떼=아메리카노+우유
모카커피=아메리카노+우유+모카시럽
Whipping cream 모카커피=아메리카노+우유+모카시럽+whipping cream

KenyaAmericano.java

public class KenyaAmericano extends Coffee{

	@Override
	public void brewing() {
		System.out.print("KenyaAmericano");
	}

	
}

Decorator.java

public abstract class Decorator extends Coffee{

	Coffee coffee;
	public Decorator(Coffee coffee) {
		this.coffee=coffee;
	}
	@Override
	public void brewing() { 
		coffee.brewing();
	}
}

Latte.java

public class Latte extends Decorator{

	public Latte(Coffee coffee) {
		super(coffee);
	}
	
	public void brewing() {
		super.brewing();
		System.out.print(" Adding Milk");
	}

	
}

Mocha.java

public class Mocha extends Decorator{

	public Mocha(Coffee coffee) {
		super(coffee);
		// TODO Auto-generated constructor stub
	}
	
	public void brewing() {
		super.brewing();
		System.out.print(" Adding Moca Syrup");
	}

}

Whipping.java

public class Whipping extends Decorator{

	public Whipping(Coffee coffee) {
		super(coffee);
		// TODO Auto-generated constructor stub
	}
	
	public void brewing() {
		super.brewing();
		System.out.print(" Adding Whipping Cream");
	}
}

CoffeeTest.java

public class CoffeeTest {

	public static void main(String[] args) {
		Coffee americano=new KenyaAmericano();
		americano.brewing();
		System.out.println();
		
		Coffee kenyaLatte=new Latte(new KenyaAmericano());
		kenyaLatte.brewing();
		System.out.println();
		
		Coffee kenyaMocha=new Mocha(new KenyaAmericano());
		kenyaMocha.brewing();
		System.out.println();
		
		Coffee kenyaWhipping=new Whipping(new KenyaAmericano());
		kenyaWhipping.brewing();
	}
}

좋은 웹페이지 즐겨찾기