728x90
반응형

객체지향 설계원칙(SOLID)

-> 변화에 유연하게 대처할수 있는 설계원칙, 사용자관점에서의 설계를 지향한다.

1. srp/isp  : 객체가 커지지 않도록 막아준다. 기능변경이 미치는 영향을 최소화한다.

2. ocp : 기능확장을 하면서 기존코드를 수정하지 않도록 한다.

3. dip : 추상화!

4. lsp : 다형성 이용. 


- SRP: Single Responsibility Principle(단일 책임의 원칙)
  클래스는 단 한가지 책임만을 가진다.
  수정할 이유가 존재하면 이것 또한 한가지 이유여야만 한다.

  위배시 절차지향적이 된다.

- OCP: Open Closed Principle (개방 폐쇄의 원칙)
  확장이 가능하고 변경은 불가능해야 한다. 확장되는 부분은 추상화하고 기능추가 되는 부분은 상속이나 다형성을 이용한다. 코드에 대한 변화요구가 발생하면 변화와 관련된 구현을 추상화해서 수정해야 한다. 새로운 요구사항에 대해서 많은 수정을 하지 않게 만들어지면 OCP를 잘 지켜 개발한 것이다.

  따라서 소프트웨어 모듈은 변경하지 않고 확장하여야 한다. 확장성을 높이기 위해 느슨한 결합원칙을준수한다.

 

- LSP: Liskov Substitution Principle (리스코프 치환 원칙)

  확장된 소스가 기존의 소스를 대체 할 수 없다. 상위타입의 객체를 하위타입의 객체로 치환해도 상위

       타입을 사용하는 프로그램은 정상적으로 동작해야 한다.

  Client가 어떤 상속관계에 있을 때 객체를 상위 클래스로 캐스팅을 할 때 문제가 발생하는지?

  is a 관계가 맞는지 확인해 본다.

 

- ISP: Interface Segregation (Interface 분리 원칙)

  클라이언트는 자신이 사용하는 메서드에만 의존해야 한다. 사용하지 않는 인터페이스에 영향을 받지

않아야 한다. 어떤 클래스가 다른 클래스에 종속될 때에는 가능한 최소한의 인터페이스만을 사용한다.

 

- DIP: Dependency Inversion Principle (의존 역전의 원리)

  고수준 모듈은 저수준 모듈의 구현에 의존해서는 안된다. 저수준 모듈이 고수준 모듈에서 정의한 추

상타입에 의존해야 한다. 추상화 기능으로 추상타입(인터페이스)를 도출하여 고수준,저수준 모듈이

추상타입에 의존하게 만든다.

  클라이언트는 사용을 할때 구체 클래스보다는 인터페이스, 추상클래스를 사용하라는 것. 인터페이스

를 바라보고 있으면 구체클래스가 바뀌더라도 클라이언트가 변경할 필요가 없다.

 

 

 

 

728x90
반응형

'Web Programming > java-jsp' 카테고리의 다른 글

java 특수문자 체크 정규표현식  (0) 2014.05.20
http, https 의 상대주소  (0) 2014.05.08
telnet 포트확인  (0) 2014.03.21
assertThat(), is()  (0) 2014.03.18
부모창 컨트롤하기  (0) 2014.03.12

+ Recent posts