반응형
Notice
Recent Posts
Recent Comments
Link
뜌릅
디자인 패턴 - 디자인 원칙(OOPL) 본문
반응형
디자인 패턴에는 여러가지 원칙이 있는데, (SOLID라든가..) 그런 기법이 아닌 객체지향 언어에서 우리가 코드를 짤때 신경써야 하는 부분을 생각해 보았다.
1. 애플리케이션에서 달라지는 부분을 찾아내고, 달라지지 않는 부분과 분리 해야 한다.
이 개념은 캡슐화의 개념과 겹치게 된다. 코드중에 중복되지 않고 바뀌는 부분이 있다면 따로 뽑아서 캡슐화를 해야한다. 그렇게 하면, 바뀌지 않는 (중복되는) 부분에는 영향을 미치지 않고 바뀌는 부분만 고치거나 확장할 수 있게 될 것이다.
중복되는 부분을 최대한 활용하는 것은 어떠한 상황에서도 이익이면 이익이 되었지 손해가 되지는 않을 것이다.
2. 객체 지향언어에서 생각 해야 할 것은 누가 어떤 것을 책임 질 것이냐 이다.
아이탬에 대한 정보를 어떤 클래스가 가져야 할지, 어떤 오퍼레이션을 어떤 클래스가 메소드로 가져야 할 지 등등, 클래스의 역할과 기능, 디자인에 신경을 써야 한다. 코드를 본격적으로 하기 전에 다이어그램으로 클래스의 구조를 미리 계획하는 것도 큰 도움이 될 것이다.
3. 구현보다는 인터페이스에 맞춰서 프로그래밍 한다.
구현보다는 상위 형식에 맞춰서 프로그래밍을 한다. Abstract 클래스나 자바의 인터페이스, 상위 클래스 등등을 이용하는 것이다. 이러한 것의 장점은 다형성을 활용 할 수 있는 것이다. 또한 코드를 재사용 가능하다는 장점도 있다.
// Dog형식의 d를 Dog형식에 맞게 프로그래밍.
Dog d = new Dog();
d.bark();
// Dog라는걸 우리가 알고 있지만, 상위형식나 인터페이스에 맞춰서 프로그래밍.
Animal animal = new Dog();
animal.makeSound();
// 상위 형식의 인스턴스를 만드는 대신, 구현된 객체를 실행 시 대입하기.
a = getAnimal();
a.makeSound();
반응형