본문 바로가기

개인 프로젝트22

기존 코드에 Stream 반영하기 <5> ?????예?????? 아놔.. 까먹고 조회할 때 스트림 안썼다;;그래도 로직은 다 있으니까 바꾸는건 쉽... 쉬..public class OrderBuilder { private final List mainItem = new ArrayList(); private final List sideItem = new ArrayList(); private Coupon coupon; public boolean isEmpty() { return mainItem.isEmpty() && sideItem.isEmpty(); } public void addMain(MainMenuType type, int quantity, int taste){ for(MainMenuI.. 2024. 11. 25.
Trouble shooting <4> 모든 state 빌드를 마치고, 테스트 구동을 하는 도중에 버그를 두개 발견했다. 1. 결제 완료 시 5초 뒤에 메인화면으로 돌아가게 하는 로직이 고장남.5초 뒤에 mainstate가 되긴 하는데, 화면이 안뜬다. 그리고 빈 화면에서 input이 받아진다. 원인은 두 가지로 볼 수 있을 것 같은데1. sleep의 특성을 제대로 이해하지 못한 채로 사용해서 오류가 발생함2. Main.js의 로직을 무시함 CompletedState.java로 state를 따로 관리하고 있었는데 그냥 Payment에 통합시키는 것이 깔끔하기도 하고 main과 충돌(handleInput으로 인해 생기는 오류)도 없을 듯 해서 병합시켰다.병합시켜주니 정상적으로 작동한다. ㅎㅎ과도한 class 분리 때문에 main.js에서 sta.. 2024. 11. 25.
Builder pattern<3> 키오스크에 빌더 패턴을 쓰게 된 계기는 예전에 디자인패턴에 관해 훑어볼 때 누군가가 빌더를 서브웨이에 비유한 것을 보고 영감을 얻었다.https://refactoring.guru/ko/design-patterns/builder 빌더 패턴/ 디자인 패턴들 / 생성 패턴 빌더 패턴 다음 이름으로도 불립니다: Builder 의도 빌더는 복잡한 객체들을 단계별로 생성할 수 있도록 하는 생성 디자인 패턴입니다. 이 패턴을 사용하면 같은 제작refactoring.guru이 글을 많이 참고했다. 빌더는 인터페이스와도 잘 쓰인다고 한다. 나는 한 명의 사용자에게 일관된 로직으로 주문을 받으니 인터페이스를 구현하지는 않고, 빌더클래스를 만들어서 주문정보를 합해서 완성된 Order 객체로 반환하도록 했다.나는 지금 팩토리.. 2024. 11. 24.
State pattern <2> https://inpa.tistory.com/entry/GOF-%F0%9F%92%A0-%EC%83%81%ED%83%9CState-%ED%8C%A8%ED%84%B4-%EC%A0%9C%EB%8C%80%EB%A1%9C-%EB%B0%B0%EC%9B%8C%EB%B3%B4%EC%9E%90 💠 상태(State) 패턴 - 완벽 마스터하기State Pattern 상태 패턴(State Pattern)은 객체가 특정 상태에 따라 행위를 달리하는 상황에서, 상태를 조건문으로 검사해서 행위를 달리하는 것이 아닌, 상태를 객체화 하여 상태가 행동을 할 수 있도inpa.tistory.comhttps://velog.io/@rudnf003/Java-%EC%83%81%ED%83%9C-%ED%8C%A8%ED%84%B4State-Patt.. 2024. 11. 24.
kiosk 구조 짜기 <1> 키오스크를 만드는 과제를 받았다. 이번에도 도전 과제에 도전한다. 나 스스로 도전하고 싶은 것도 있다.그것은 디자인 패턴을 "의도 하에" 적용하는 것이다. 일단 나는 엽떡을 좋아하니까 햄버거 말고 엽떡으로 개발하려고 한다. 필수 기능만 구현하면 메뉴는 상관없지 않을까?디자인 패턴은 이렇게 사용하기로 정했다. 메뉴: factory 패턴과 enum을 결합한다. enum으로 메뉴 이름이나 가격 등을 관리하고, 팩토리를 통해 동적으로 객체를 생성한다면 좋은 시너지가 날 것이다. 메인 메뉴 말고도 사이드 메뉴도 동일한 구조로 관리가 가능하다. 메뉴 추가: builder 패턴을 활용해서 메인메뉴와 사이드메뉴를 동적으로 추가한다. 주문 상태: '메뉴 선택, 장바구니 추가, 주문 완료' 등으로 이루어지는 주문 단계의 .. 2024. 11. 23.
추상 클래스를 도입해보자 <10> 예전에, 계산기를 업그레이드 하기 전에 초반에는 구조가 이렇게 되어있었다.주목할 곳은 abstract operation이다. 당시의 나는 "왜 사칙연산밖에 못 하는데 추상 클래스를 4개나 나눠야 하는 거지?" 라고 생각했었고, 나눠져 있던 5개의 클래스를 하나의 enum으로 통합하고 뿌듯해했다.하지만 내 java에 대한 시야가 확장되면서 이젠 enum과 추상 클래스를 같이 사용하며'두 개의 연산자를 받아서' '다양한 복잡한 연산을 수행하는 기능' 을 '같은 구조로 손쉽게' 추가하는 기능을 도입해보려고 한다. 그럼 코딩을 하기 전, 이들이 얼마나 다른지 짚고 넘어가보자.1. enum만 사용한 operation: 열거형으로 단순하고 직관적이다. 한 파일 안에 모두 담긴다. 하지만, 확장성이 좋지 않다. 지금.. 2024. 11. 19.