목록전체 글 (53)
웹풀스택 공부 중

좋은, 객체 지향적 프로그래밍이란?중복의 최소화코드 변경의 용이성재사용성DRY: Don’t Repeat YourselfKISS: Keep It Simple and StupidYAGNI: You Ain’t Gonna Need It구현보다 인터페이스에 맞춰서 코딩하자구현은 언제든지 바뀔 수 있다. 인터페이스를 사용해서 유연하게 구현하자!상속 보다는 인터페이스 구성 (Composite)을 사용하자!상속이 아닌 인터페이스 구성 시 원하는 구현을 붙였다 떼었다가 할 수 있다!SOLID객체 지향의 정수“제대로된 분업화”목표: High Cohesion, Loose CouplingCohesion: 응집도관련된 작업을 하나로 묶는 행위 (높여야한다)Coupling: 결합도하나가 바뀌면 다른 하나가 또 바뀌는 현상 (낮춰..
ENUM분류된 객체 모음특정 타입의 객체들을 한곳에 묶어둔다. “Categorized 객체”사용목적메서드 수행 시, Parameter에 너무 많은 경우의 수가 발생하는것을 방지Parameter(값)의 종류나 Return value의 종류를 제약하고 싶을때 사용한다경우의 수? public static void createMessage(**String** message) { System.out.println("당신에게 메세지를 보냅니다. : " + message); }이런식 일때, String message에 모든 메세지를 보낼 수 있다예시.) “사랑합니다”나, “감사합니다” 만으로 줄이고 싶을 때 Enum을 사용하여 경우의 수를 줄일 수 있다@Getter@RequiredArgsCons..

Abstract Class vs InterfaceAbstract Class예시 @Slf4j public abstract class KafkaAbstractListener implements KafkaListener { @PostConstruct public void instantiated() { log.info("[Abstract Class] {} is created", this.getType().name()); } @PreDestroy abstract void destroy(); }더 쉬운 예시 abstract class MakingRamen implements RamenProcess { public ..
Generic귀에 걸먼 귀걸이, 코에 걸먼 코걸이…Generic은 에 우리가 원하는 타입을 넣으면 그에 맞게 클래스가 변화하는 것이다어떤 타입의 클래스도 정의할 수 있는 확장성을 보장한다예시 public interface JpaRepository { public abstract T findById(F id) public abstract F save(T user) public abstract void delete(F id) } public class PaymentRepository / PaymentTable implements JpaRepository { private Database psqlDatabase; public..
Static: 인스턴스화 없이 바로 사용 가능객체를 만들지 않고도 사용할 수 있는 Field, Method, Class 이다정적 Field: 이것은 Static Method에서 바로 사용이 가능하다static을 사용할때 주로 final 을 같이 쓴다값이 바뀌는걸 방어한다public 도 같이 사용한다어차피 넘기기 위한 용도이기에…비밀스럽게 Static Method에서만 사용하고 싶을땐 private을 붙여도 상관은 ㅇ정적 Method: 속한 클래스의 인스턴스 없이 사용 가능한 메서드이다유틸리티 관련 메서드를 만드는데 유용하게 사용된다Parameter만 받아서 사용하는 Method는 Static으로 사용하는게 좋다Field가 없는 Method를 뜻하는거다어떤곳에도 의존하지 않기에 객체를 만들 필요가 없다!@..
DTO (Data Transfer Object) - 가변 객체Setter 와 Getter가 있다@Data 라는 Annotation을 사용할 수 있다이 Annotation안에 아래의 것들을 한번에 모아 정의해두었다@RequiredArgsConstructor@Setter@Getter@ToString@EqualsAndHashCode편의성을 제공하나, 신경써야할게 많아진다ex.) Final과 Non-Final을 꼭 구분해야한다사용하지 않을 함수를 노출하게 될 수도 있다// mainMember aaron = new Member(1, "Aaron");aaron.setAge(10);aaron.setEmail("aaron@gmail.com");// Member@Datapublic class Member { pri..