PSA(Portable Service Abstraction)

이정연·2023년 1월 30일
0

기본지식

목록 보기
6/10
  • 공통된 특성을 일반화 시켜놓고 상황에 맞게 같은 명령어로 다른 동작을 하게 만드는 방법
  • 일반적으로 아이가 할 수있는 행동들에는 웃다, 울다, 자다, 먹다 가 있다.
  • 그렇지만 연령에 따라 같은 자다 여도 다를 수 있다.
  • 따라서 코드의 반복을 줄이기 위해서 같은 자다를 써도 다른 결과가 나오게 해야 좋은 코드가 될 수 있다.
  • 기술이 변경되더라도 최소한의 변경으로 요구사항에 유연하게 대처할 수 있게함.
  • 여기에 추상 클래스를 이용한다.
public abstract class Child {
    protected String childType;
    protected double height;
    protected double weight;
    protected String bloodType;
    protected int age;

    protected abstract void smile();

    protected abstract void cry();

    protected abstract void sleep();

    protected abstract void eat();
}

각각 smile, cry, sleep, eat가 내용이없이 정의 되어있다.
아래에서는 이러한 추상클래스를 상속받아 이용한다.


public class NewBornBaby extends Child {
    @Override
    protected void smile() {
        System.out.println("신생아는 가끔 웃어요");
    }
}

public class Infant extends Child {
    @Override
    protected void smile() {
        System.out.println("영아는 많이 웃어요");
    }
}

public class Toddler extends Child {
    @Override
    protected void smile() {
        System.out.println("유아는 웃길 때 웃어요");
    }
}

신생아, 영아, 유아 별로 고유의동작을 각각 자기에 맞게 정의하여 사용하고 있다.

적용

public class ChildManageApplication {
    public static void main(String[] args) {
        Child newBornBaby = new NewBornBaby(); // (1)
        Child infant = new Infant(); // (2)
        Child toddler = new Toddler(); // (3)

        newBornBaby.smile();
        infant.smile();
        toddler.smile();
    }
}


실행결과
신생아는  가끔웃어요
영아는 많이 웃어요
유아는 웃길 때 웃어요

클라이언트 입장에서는 Chile라는 추상클래스만 일관되게 바라보면 나이에 맞게 알아서 적용시켜주는 것을 사용할 수 있다.

profile
반갑습니다.

0개의 댓글