[F-lab 모각코 챌린지 51일차] TIL

JeongheeKim·2023년 7월 21일

TIL

목록 보기
51/66

학습계획


  • 컨트롤러의 역할
  • Junit 문서읽기
  • 디자인 패턴

Today I Learned


  • 컨트롤러의 역할 사용자로 부터의 입력에 대한 응답을 받고, 모델을 적당히 처리한 다음, 업데이트된 데이터를 뷰에 전송
    public HttpStatus signup(MemberRequestDto memberRequestDto) {
            isExistMember(memberRequestDto);
            Member member = Member.builder()
                .id(memberRequestDto.getId())
                .userName(memberRequestDto.getUserName())
                .password(passwordEncoder.encode(memberRequestDto.getPassword()))
                .email(memberRequestDto.getEmail())
                .build();
            return HttpStatus.OK;
        }

Junit 문서읽기

  • test메소드는 abstract하면 안되고, return value가 없어야한다.(@TestFactory제외)
  • 테스트 클래스 및 테스트 메소드는 public으로 선언할 필요는 없다. 단, private은 선언하지 말것을 권장

디자인 패턴

전략패턴

  • 전략패턴 구성
    • 전략 메서드를 가진 전략 객체

    • 전략 객체를 사용하는 컨텍스트(전략 객체의 사용자, 소비자)

    • 전략 객체를 생성해 컨텍스트에 주입하는 클라이언트

예제)

  • 전략 : 무기
  • 클라이언트 : 보급장교
  • 컨텍스트 : 군인
public interface Strategy {
    public abstract void runStrategy();
}
public class StrategyBow implements Strategy{

    @Override
    public void runStrategy() {
        System.out.println("슝슝슝~");
    }
}

public class StrategyGun implements Strategy {

    @Override
    public void runStrategy() {
        System.out.println("빵야 빵야~");
    }
}
public class Soldier {
    void runContext(Strategy strategy) {
        System.out.println("전투시작");
        strategy.runStrategy();
        System.out.println("전투종료");
    }
}
public class Client {

    public static void main(String[] args) {
        Strategy strategy = null;
        Soldier soldier = new Soldier();

        strategy = new StrategyGun();
        soldier.runContext(strategy);

        strategy = new StrategyBow();
        soldier.runContext(strategy);
    }

}

싱글톤 패턴

인스턴스를 하나만 만들기 위한 패턴

  • 싱글톤 패턴 사용 예시
    • 스레드 풀, 커넥션 풀, 디바이스 설정 객체
  • 싱글톤 생성 규칙
    • new를 실행할 수 없도록 생성자에 private 접근 제어자를 지정한다.
    • 유일한 단일 객체를 반환할 수 있는 정적 메서드가 필요하다.
    • 유일한 단일 객체를 참조할 정적 참조변수가 필요하다.
public class Singleton {

    static Singleton singletonObject;//정적 참조변수

    private Singleton() {
    }

    ;//private 생성자

    //객체반환 정적 메서드
    public static Singleton getInstance() {
        if (singletonObject == null) {
            singletonObject = new Singleton();
        }
        return singletonObject;
    }

}

0개의 댓글