일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 네트워크 설정
- 리눅스
- 자바편
- 서버설정
- ㅒ
- 목록처리
- d
- 데비안
- 스프링 시큐리티
- /etc/network/interfaces
- 스프링부트핵심가이드
- network configuration
- 페이징
- 자료구조와 함께 배우는 알고리즘 입문
- 코드로배우는스프링부트웹프로젝트
- 친절한SQL튜닝
- GIT
- Kernighan의 C언어 프로그래밍
- 티스토리 쿠키 삭제
- 선형대수
- resttemplate
- iterator
- 이터레이터
- 처음 만나는 AI수학 with Python
- 구멍가게코딩단
- 자료구조와함께배우는알고리즘입문
- baeldung
- 코드로배우는스프링웹프로젝트
- 알파회계
- 처음 만나는 AI 수학 with Python
- Today
- Total
목록전체 글 (406)
bright jazz music
개별 (오리, QuackableInterfaceForCompoundPattern)객체의 상태 변경을 체크하고 싶어졌다. 따라서 Observer 패턴을 사용한다. 우선 Observable 인터페이스를 생성한다. 여기서는 QuackObservable이라고 명명했다. Observable이 바로 관찰 대상이 된다. Observable에는 옵저버를 등록하는 메소드와 옵저버에게 연락하는 메소드가 존재해야 한다. 필요시 옵저버 제거 메소드를 포함할 수도 있다. //QuackObservable.java package com.example.designpatternstudy.compoundPattern; //개별 객체의 동작을 감시하고자 할 때 사용 //여기서는 QuackableInterfaceForCompoundPatt..
아래 페이지를 참고하였다. http://www.tcpschool.com/java/java_generic_various 제네릭 메소드(Generic method) 제네릭 메소드란 메소드의 선언부에 타입 변수를 사용한 메소드를 의미. 이 때 타입변수의 선언은 메소드 선언부에서 반환 타입 바로 앞에 위치 public static void sort(...) { ... } 아래 예제에서 제네릭 클래스에서 정의된 타입변수 T와 제네릭 메소드에서 사용된 타입변수 T는 별개의 것임을 주의. class AnimalList { ... public static void sort(List list, Comparator
아래의 페이지를 참고하였다. http://www.tcpschool.com/java/java_generic_various 타입 변수의 제한 제네릭은 'T'와 같은 타입변수를 사용하여 타입을 제한한다. 이 때 extends 키워드를 사용하면 타입변수에 특정 타입만을 사용하도록 제한할 수 있다. 예시 class AnimalList { ... } 위와 같이 클래스의 타입변수를 제한하면 클래스 내부에서 사용되는 모든 타입변수에 제한이 걸린다. * 이렇게 타입변수를 제한하는 경우, 인터페이스를 구현할 때도 implements가 아닌 extends 키워드를 사용해야 한다. //인터페이스 interface WarmBlood { ... } class AnimalList { //implements를 사용해서는 안 된다. ..
아래의 페이지를 참고하였다. http://www.tcpschool.com/java/java_generic_concept Generic 자바에서의 제네릭은 데이터의 타입을 일반화 한다는 것을 의미(generalize) 제네릭은 클래스나 메소드에서 사용할 내부 데이터 타입을 컴파일 시에 미리 지정하는 방법 컴파일 시에 미리 타입검사를 수행하면 아래와 같은 장점을 가진다. 1. 클래스나 메소드 내부에서 사용되는 객체의 타입 안정성을 높일 수 있다. 2. 반환값에 대한 타입 변환 및 타입 검사에 들어가는 노력을 줄일 수 있다. JDK 1.5 이전에는 여러 타입을 사용하는 대부분의 클래스나 메소드에서, 파라미터나 반환 값으로 Object를 사용했다. 이 경우 반환된 Object 객체를 다시 원하는 타입으로 타입 ..
이곳의 예제를 참고하였다. https://cloudstudying.kr/challenges/429 package com.example.demospring.testFile; import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class TestUpcasting { public static void main(String[] args) { // 다양한 객체 생성 Bird bird = new Bird(); Helicopter copter = new Helicopter(); Rocket rocket = new Rocket(); // 인터페이스 타입으로 그룹화 //1. 어레이 Flyable[] flyableThing..
팩토리 패턴을 사용함으로써, 일일이 데코레이터로 객체를 감싸는 작업에서 벗어났다. 데코레이터로 감싸는 팩토리 클래스를 사용하면 데코레이터로 감싸진 오리 객체(QuackableInterfaceForCompoundPattern)이 생성되기 때문이다. 그러나 여전히 오리를 개별로 관리해 줘야 하는 불편이 존재한다. 오리를 종류별로 분류하여 관리할 수는 없을까? 이런 경우 Composite 패턴을 사용할 수 있다. Composite패턴은 "객체를 원소로 가지는 컬렉션"을 개별 객체와 같은 방식으로 다루기 위해 사용하는 패턴이다. 우선 컴포지트 패턴을 사용한 Flock 클래스부터 생성하자. //Flock.java //오리 무리를 만드는 클래스 //composite패턴 사용: 객체들로 구성된 컬렉션을 개별 객체와 ..
DuckSimulator에서 데코레이터로 객체를 감싸야만 오리가 소리 낸 횟수를 셀 수 있다. 그런데 오리의 종류가 늘어나고 DuckSimulator의 코드가 복잡해진다면 실수로 객체를 감싸지 않는 문제가 생길 수 있다. 이런 경우 차라리 오리를 생성하고 감싸는 작업을 분리하여 한 군데서 수행하는 것이 좋다. 이 때 팩토리 패턴을 사용해볼 수 있다. 이 예제에서는 추상 팩토리 클래스를 만들고 그 팩토리 클래스를 상속하는 방식으로 또다른 팩토리 클래스를 만들어 나가는 방식을 사용한다. 아래는 추상 팩토리 클래스인 AbstractDuckFactory이다. 이를 기반으로 기능을 추가한 팩토리 클래스를 생성할 것이다. //AbstractDuckFactory.java //새로운 기능을 사용할 때는 객체를 데코레이..
갑자기 오리가 소리낸 횟수를 세는 기능을 오리 클래스 수정 없이 추가하고 싶어졌다. 이 때 데코레이터 패턴을 사용할 수 있다. 데코레이터 패턴은 기존 기능의 수정 없이 새로운 기능을 추가하고 싶을 때 사용할 수 있다. 사실상 어댑터 패턴과 유사하다. 어댑터 패턴은 호환에 좀 더 중점을 준다는 점이 다른 것 같다. 데코레이터 패턴은 데코레이터 클래스를 만들어서 기존 객체들을 데코레이터로 감싸면 된다. 이렇게 하면 Duck코드는 건드리지 않아도 된다. 1. 데코레이터 생성 //QuackCountingDecorator.java package com.example.designpatternstudy.compoundPattern; //데코레이터. 어댑터와 마찬가지로 타겟 인터페이스 구현 필요 public class..
여기에 quack하는 기능을 가진 QuackableInterfaceForCompoundPattern 인터페이스가 있다. //QuackableInterfaceForCompoundPattern package com.example.designpatternstudy.CompoundPattern; public interface QuackableInterfaceForCompoundPattern { public void quack(); } 여러 가지 오리 클래스들이 인터페이스를 구현하여 quack 기능을 오버라이드 한다. MallardDuck, RedheadDuck, 그리고 오리 소리를 낼 수 있는 DuckCall, RubberDuck 역시 QuackableInterfaceForCompoundPattern을 구현하여..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/eo8lOW/btrOrcSnChQ/Rhqxu7TSNtcBjy9FptijPK/img.png)
https://github.com/hojuncha997/bootBoard GitHub - hojuncha997/bootBoard: 코드로 배우는 스프링부트 웹 프로젝트 ch.5 코드로 배우는 스프링부트 웹 프로젝트 ch.5. Contribute to hojuncha997/bootBoard development by creating an account on GitHub. github.com 1. list.html에 아래 코드 추가 검색을 위한 폼과 버튼을 추가한다. 이 폼은 테이블 위에 존재할 것이다. ------- 제목 내용 작성자 제목 + 내용 제목 + 내용 + 작성자 Search Clear 이전 포스팅에서 게시했던 list.html은 내가 일부 코드를 빼먹어서 오류가 발생하였다. 따라서 수정하였다. ..