[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();
}
}
Author And Source
이 문제에 관하여([JAVA][패스트캠퍼스]자바 입출력 - 그 외 입출력 클래스와 데코레이터 패턴), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@kjhabc2002/JAVA패스트캠퍼스자바-입출력-그-외-입출력-클래스와-데코레이터-패턴저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)