목록프로그래밍 (141)
불로구

인터페이스 분리 원칙 필요하지 않는 요소를 구현하도록 강요하거나 사용하지 않는 요소에 의존하도록 만들면 안된다. 어떤 클래스가 다른 클래스에 종속될 때에는 가능한 최소한의 인터페이스만 사용 인터페이스의 크기를 최소화 한 덩어리의 복잡한 인터페이스를 목적에 따라 구분하여 나눈다 ( 상속 , 위임을 통해) 기존 phone{ call() sms() alarm() } 변경 Call{ call() } Sms{ sms() } Alarm{ alarm() } 의존성 역전 원칙 상위 모듈이 하위 모듈에 종속성을 가져서는 안되며, 양쪽 모두 추상화에 의존해야 한다. 즉, 하위 레벨 모듈의 변경이 상위 레벨 모듈의 변경을 요구하는 구조적 문제에서 발생하는 위계르 끊는 것 실제 사용 관계는 바뀌지 않으며, 추상을 매개로 메시..
SOLID 원칙 소프트웨어를 설계함에 있어 이해하기 쉽고, 유연하며, 유지보수가 편하도록 도와주는 5가지 원칙 단일책임원칙, 개방폐쇄원칙, 리스코프치환원칙, 인터페이스분리원칙, 의존성역전원칙 단일 책임 원칙 ( SRT, Single Responsibility Principle ) 모든 클래스는 단 한가지의 책임을 부여받아, 수정할 이유가 단 한 가지여야 한다. 즉, 클래스에 속해있는 멤버들과 메소드는 모두 공통적으로 하나의 서비스를 위해 필요 적용 방법 각 책임을 각각의 개별 클래스로 분할 분할 후에도 비슷한 책임을 갖고 있다면 부모클래스로 추출 , 필드나 메소드를 옮길 수도 있다. 클래스 이름을 해당 클래스의 책임을 나타낼 수 있도록 작성 SRT 적용 전 class Car{ private String ..
객체지향이란? OOP(Object-Oriented Programming) 컴퓨터 프로그래밍 패러다임 중 하나 필요한 데이터를 추상화 행위를 가진 객체를 만들고, 그 객체들간의 상호작용을 통해 로직 구성을 하는 프로그래밍 방법 객체지향 프로그래밍의 장점? 코드 재사용 : 3rd party Library, 상속을 통해 확장하여 사용 가능! 유지보수 용이 : 수정해야 할 부분이 클래스 내부에 멤버 변수 or 메서드로 있기에 찾기 쉬움 대형 프로젝트 적합성 : 클래스단위로 모듈화 시켜서 개발할 수 있으므로 대형 프로젝트처럼 여러명이 개발하기 좋다 객체지향 프로그래밍의 단점? 처리속도가 상대적으로 느림 : JVM 객체가 많으면 용량이 커진다. 설계시 많은 시간과 노력 필요 객체지향 5가지 키워드 클래스+인스턴스 ..

MVC 패턴 - Model, View, Controller의 약자 - 하나의 애플리케이션, 프로젝트를 구성할 때 그 구성요소를 3가지로 구분한 패턴 Model - 애플리케이션의 정보와 데이터 - DB, 상수, 변수등을 나타낸다. - 위 정보들의 가공을 책임지는 컴포넌트 - 사용자가 편집하길 원하는 모든 데이터를 가진다 - View, Controller에 대해 어떤 정보도 알지 않아야 한다. -> 데이터 변경 발생 시 모델에서 UI를 직접 조정가능하게 뷰를 참조하는 내부 속성값을 가지면 안된다. - 변경 발생 시 처리방법을 구현해야 한다. View - 데이터 및 객체의 입출력 담당 - 사용자들이 볼 수 있는 화면 - 모델이 가지고 있는 정보를 따로 저장하면 안됨 - 모델이나 컨트롤러와 같이 다른 구성요소들..