[Effective Java 3/e] 아이템 23 - 태그 달린 클래스보다는 클래스 계층구조를 활용하라
아이템 23 - 태그 달린 클래스보다는 클래스 계층구조를 활용하라
태그 달린 클래스의 단점
- 장황하고, 오류를 내기 쉽고, 비효율적
- 클래스 계층구조를 어설프게 흉내 낸 아류
태그 달린 클래스 - 클래스 계층구조보다 훨씬 나쁘다
class Figure {
enum Shape { RECTANGLE, CIRCLE };
//태그 필드 - 현재 모양을 나타냄
final Shape shape;
// 사각형 일 때만 쓰이는 필드
double length;
double width;
// 원 일 때만 쓰이는 필드
double radius;
//원용 생성자
Figure(double radius) {
shape = Shape.CIRCLE;
this.radius = radius;
}
//사각형용 생성자
Figure(double length, double width) {
shape = Shape.RECTANGLE;
this.length = length;
this.width = width;
}
}
태그 달린 클래스를 클래스 계층구조로 변환
```java abstract class Figure { abstract double area(); }
class Circle extends Figure { final double radius;
Circle(double radius) { this.radius = radius; } }
class Rectangle extends Figure { final double length; final double width;
Rectangle(double length, double width) { this.length = length; this.width = width; } }