처음 자바를 배울때 인터페이스, 추상클래스, 구현클래스에 대해서 각각 이렇게 배우고, 암기하게된다. * 인터페이스 : 메서드의 몸통을 가질 수 없음. 추상메서드와 상수만 보유가능.* 추상클래스 : 구현메서드와 추상메서드를 모두 가질 수 있음. 단독으로 객체생성 불가능.* 구현클래스 : 구현메서드만 가질 수 있음. 인터페이스를 구현하거나 추상클래스를 상속받은 경우 해당 추상메서드를 반드시 구현해야 함. 자바를 처음 배울때는 보통 추상 클래스 혹은 구현 클래스를 이용해 중복 코드를 상위 클래스로 뽑아내고 하위 클래스들에서 재사용하는것에 큰 매력을 느끼게되고, 구현부따위없는 인터페이스에는 그다지 매력을 못느끼는 경우가 많다. 코드를 재사용할 수 있는것도 아니고 그저 메서드 시그니처만 강제하는게 무슨 의미가있다..
MVC 구조로 개발을 하게되면 공통적으로 생성되는 자바파일들이 있다.Controller, Service, DAO, DTO가 그것인데 여기서 DTO는 VO라는 명칭으로도 많이 사용된다.같은 뜻이라면 애초에 2가지 용어가 존재하지 않을텐데, 이 두 용어의 차이를 포스팅하고자한다. 1. DTO(Data Transfer Object)Data Transfer Object 의 약자로 레이어를 이동할때 데이터를 들고있는 객체를 말한다. 객체지향적인 요소는 없이 단순히 데이터만 들고 이동시키기때문에 필드를 public 접근제어자를 사용해 직접 접근하도록 하는 경우도 있다. 자바에서는 뭔가를 하려면 일단 객체를 만들어야되니 객체화해서 사용할뿐 실질적으로 객체지향이라는 거리가 있는 객체.DTO와 VO의 혼용은 사실상 DT..
이제는 JSP 개발시 MVC 패턴으로 작업하는게 당연시 되고있다. MVC패턴이란 화면에 보여줄 view 에 대한 작업, DB에서 조회 혹은 DB에 저장할 내용을 중간에 가공, 처리하는 비즈니스로직, DB에 연결하는 DAO 작업까지 JSP에서 다 하던걸 패턴화 시켜 분리하여 개발하는것인데 각각의 역할에 따라 파일들을 분리해서 작업하는것이다.그렇게 하는 이유는 소스를 분리함으로서 각 소스의 목적이 명확해 지고 유지보수하는데 있어서 용이하기 때문이다. MVC 패턴으로 개발하고자하면 자연스레 한 페이지에 5개의 파일이 생성되는데 JSP, Controller, DTO, Service, DAO 이다. 오늘 포스팅할 내용은 이 파일들 중 Service에 관한것이다. 오랜시간 궁금했던 것Service 에 대해선 항상 ..
1. SRP - 단일책임원칙클래스나 메서드는 하나의 역할만을 하며 한가지 책임만을 진다.A 클래스가 존재하고 해당 A클래스는 B 클래스와 C 클래스에서 사용된다. 예)class B{ main(){ A a = new A(); a.getName(); }} class C{ main(){ A a = new A(); a.getId(); }} A 클래스는 B와 C에서 사용되지만 각각 다른 메서드를 호출하며 '다른 역할'을 하고있다.이경우 A클래스는 B에서 사용되는 역할때문에 수정될 수도 있고 C에서 사용되는 역할때문에 수정될 수도 있다.이런경우에는 A클래스를 나눠 한가지 역할만을 행하게 해야한다.메서드도 소스를 보다보면 if문같은 분기문으로 나뉘어서 완전히 다른 로직으로 진행되는 경우를 흔히 볼 수 있다.이런 경우..
자바쪽에 넣어야할지 고민이 됐는데 물론 설명에 대한 기반 베이스는 자바이지만 객체지향의 특성에 대한것이니 기타프로그래밍쪽에 넣게됐음. 캡슐화 -객체의 속성에 함부로 직접접근을 하지못하게 한다. -자바에선 주로 private 접근제어자를 이용해 외부에서 접근하지못하게 선언하고 setter, getter를 이용해 수정, 조회를 한다. 그냥 형식적인 setter, getter를 사실 직접 접근해서 값을 바꾸고 가져오는것과 큰 차이가 없지만 setter, getter에는 값 제한이나 타입 변경같은 로직이 추가될수도있기때문에 그걸 염두해서 생각해야한다. -보통 private public 을 많이 사용하지만 default나 proteced도 잘 숙지하고 필요할땐 사용할 수 있어야한다. 상속 -상속이라고 말하지만 아..
- Total
- Today
- Yesterday
- Design Pattern
- Spring
- MySQL
- go-core
- programming
- Git
- JPA
- DesignPattern
- Jackson
- frontcode
- db
- frontend개발환경
- Kotlin
- http
- java8
- EffectiveJava
- clean code
- java
- 정규표현식
- mariadb
- code
- TEST
- generics
- backend개발환경
- OOP
- toby
- javascript
- servlet
- JavaScript Core
- spring cloud
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |