토비의 스프링 3.1을 읽으면서 기억해두면 좋을 것 같은 내용이 있어서 적어 두어야겠다.

 

리팩토링 : 기존의 코드를 외부의 동작방식에는 변화 없이 내부 구조를 변경해서 재구성하는 작업 또는 기술을 말한다.

리팩토링을 하게 된다면 코드 내부의 설계가 개선되어 코드를 이해하기 편해지고, 변화에 효울적으로 대응할 수 있다고 한다.

 

템플릿 메소드 패턴: 상속을 통해 슈퍼클래스의 기능을 확장할 때 사용하는 가장 대표적인 방법이다.

변하지 않는 기능은 슈퍼클래스에 만들어두고 자주 변경되며 확장할 기능은 서브클래스에서 만들도록 해야한다고 한다.

슈퍼클래스에서는 미리 추상 메소드 또는 오버라이드 가능한 메소드를 정의해두고 이를 활용한다.

 

팩토리 메소드 패턴: 템플릿 메소드 패턴과 마찬가지로 상속을 통해 기능을 확장하게 하는 패턴이다. 구조도 비슷하다고 한다. 

 

개방 폐쇠 원칙: 깔끔한 설계를 위해 적용 가능한 객체지향 설계 원칙 중의 하나다. 간단히 정희하자면 클래스나 모듈은 확장에는 열려있어야 하고 변경에는 닫혀있어야 한다.

 

높은 응집도: 변경이 일어날 때 모듈의 많은 부분이 함께 바뀌면 응집도가 낮다고한다.

 

낮은 응집도: 높은 응집도와 반대로 관계 를 유지하는데 꼭 필요한 최소한의 방법만 간접적인 형태로 제공된다.

 

결합도: 하나의 오브젝트가 변경이 일어날 때에 관계를 맺고 있는 다른 오브젝트에게 변화를 요구하는 정도

 

예를들어) 유저DAO클래스를 만들 때 유저DAO를 사용할 메소드(삽입, 삭제등 유저 데이터가 필요한 경우) 유저DAO에 데이터가 추가된다면 그 밑 하위 클래스들도 영향을 미친다. DB에 연결할 인터페이스를 만들고 DB 연결 기능을 구현한 클래스가 바뀌더라도 DAO는 바뀔 필요가 없다.

 

 

전략패턴: 자신의 기능 맥락에서, 필요에 따라 변경이 필요한 알고리즘을 인터페이스르 통해 통째로 외부로 분리시키고, 이를 구현한 구체적인 알고리즘 클래스를 필요에 따라 바꿔서 사용할 수 있게 하는 디자인 패턴이다.

+ Recent posts