Java
Java - 객체지향 - 단일 책임 원칙과 클래스 상속시에 주의할 점
dev_SiWoo
2022. 1. 6. 09:25
아래의 코드를 보면 단일 책임을 원칙을 위배하여 Unit이라는 클래스에서
저글링, 탱크, 정찰기 등 2가지 이상의 것들에 대해서 Unit이 책임을 지고 있다.
|
하지만 이런식으로 프로그래밍할 경우 Unit클래스에 대한 의존성이 너무 높아지게된다.
좋은 객체지향 프로그래밍은 의존성을 낮추어야 하므로 다시 아래와 같이 작성해야한다.
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
|
package SPR_test;
public class zergling extends Unit {
public void move() {
this.speed += 3;
}
}
package SPR_test;
public class Observer extends Unit{
public void move() {
this.speed += 3;
this.status =3;
}
}
package SPR_test;
public class tank extends Unit {
public void move() {
this.speed += 3;
if (this.status == 1) {
speed = 0;
}else{
speed = 10;
}
}
}
|
cs |
또 이렇게 저글링, 탱크, 정찰기가 각각의 기능만 수행하게 작성하려고
Unit클래스를 상속받게 되는데 이때
priavate 접근제한을 갖는 필드와 메소드는 상속은 되지만 자식 클래스에서 직접 접근할 수 없다.
따라서 자식클래스에게 상속시켜야 하는 필드나 메소드가 있다면
private이 아닌 protected또는 public 으로 선언해야할 것이다.