============================================================================================

============================================================================================
L00E01 Composite Pattern
L00E02 Facade Pattern
L00E03 Bridge Pattern
L00E04 Proxy Pattern
L00E05 Adapter Pattern
L00E06 Observer Pattern
L00E07 Strategy Pattern
L00E08 REST Architectural Style
L00E09 Layered Architecture Style
L00E10 Mock Object Pattern
W01E01 Strategy vs. bridge pattern
W01E02 Model a car rental system in UML
W01E03 Quiz
W02E01 State Pattern
W02E02 Template Method Pattern
W02E03 Command Pattern
W02E04 Mediator Pattern
W03E01 Factory Method Pattern
W03E02 Abstract Factory Pattern
W03E03 Flyweight Pattern
W03E04 Builder Pattern
W04E01 Model View Controller
W04E02 Model View Controller 2
W04E03 Broker
W04E04 Blackboard Pattern
W05E01 REST Quiz
W05E02 RESTful Client
W05E03 RESTful Web Service
W05E04 Microservices
W06E01 Golden Hammer
W06E02 Functional Decomposition
W06E03 Lava Flow
W06E04 The Blob
W07E01 Cut and Paste Programming
W07E02 Vendor Lock in
W07E03 Antipatterns Quiz
W07E04 Inheritance - Delegation
W07E05 Conditionals - Polymorphism
W07E06 Error - Checked Exception
W08E01 Mock Object Pattern with EasyMock
W08E02 Mock Object Pattern with Mockito
W08E03 Reflection Test Pattern
W08E04 Testing MVC
W09E01 Dependency Injection with Guice
W09E02 Dependency Injection with Spring
W09E03 Testing a REST Server
W10E01 Strangler Pattern
W10E02 Decentralized ID Generation
W10E03 Circuit Breaker
W10E04 Async Messages
W11E01 Blue-Green Deployment
W11E02 Canary Releases
W11E03 Feature Toggles
W11E04 Retry Pattern
W12E01 Remote control for smart speaker
================================
L00E01 Composite Pattern

L00E02 Facade Pattern

L00E03 Bridge Pattern
-> 
L00E04 Proxy Pattern 
L00E05 Adapter Pattern

L00E06 Observer Pattern

->


L00E07 Strategy Pattern

L00E08 REST Architectural Style on MVC model view control
apply the layered architectural pattern on top of an MVC design pattern and to write an API.



L00E09 Layered Architecture Style

여기에 프리젠테이션 레이어를 추가하기

CaesarEncryption was replaced with AesEncryption.

L00E10 Mock Object Pattern



W01E01 Strategy vs. bridge pattern
W01E02 Model a car rental system in UML


W01E03 Quiz - Overriding
static method
bark() 메소드가 static으로 선언됨
자바에서 static 메소드는 오버라이딩되지 않음
static 메소드는 컴파일 시점에 결정됨 (정적 바인딩)
참조 변수의 타입(Dog)이 어떤 static 메소드가 호출될지 결정
이는 메소드 오버라이딩과 다르게 동작함. 만약 메소드 오버라이딩을 원한다면, static 키워드를 제거해야 합니다.
자바의 타입 시스템과 메소드 오버로딩 해결 규칙
클래스에 두 개의 private 생성자가 있음
하나는 Object 파라미터를 받음. 다른 하나는 double[] 배열을 파라미터로 받음
null은 어떤 객체 타입이나 배열 타입에도 할당될 수 있음. 자바 컴파일러는 가장 구체적인(specific) 타입을 선택함. double[]은 Object보다 더 구체적인 타입임. 따라서 double[] 파라미터를 받는 생성자가 선택됨
equals 메소드 시그니처: 다르게 써서 오버라이딩 대신 오버로딩
equals() 메소드의 잘못된 오버라이딩
Set.contains()는 내부적으로 Object.equals(Object)를 사용
현재 구현은 equals를 오버로딩(overloading)했지만, 오버라이딩(overriding)하지 않음
따라서 Object 클래스의 기본 equals가 사용됨
Object.equals()는 참조 동등성(reference equality)만 검사
두 Name 객체는 다른 인스턴스이므로 false 반환
W02E01 State Pattern

W02E02 Template Method Pattern

-> 
W02E03 Command Pattern
W02E04 Mediator Pattern

W03E01 Factory Method Pattern

W03E02 Abstract Factory Pattern

W03E03 Flyweight Pattern

W03E04 Builder Pattern

W04E01 Model View Controller

W04E02 Model View Controller 2


W04E03 Broker

Brocker

client


W04E04 Blackboard Pattern

W05E01 REST Quiz
W05E02 RESTful Client
implement callbacks in client

W05E03 RESTful Web Service



W05E04 Microservices


W06E01 Golden Hammer

W06E02 Functional Decomposition

W06E03 Lava Flow
W06E04 The Blob
that he put the whole code in one single big class. => 코드 클래스 나누기
W07E01 Cut and Paste Programming
TODO: add model screenshot
W07E02 Vendor Lock in - Apache, Apache and Apache | base64 encoding
W07E03 Antipatterns Quiz
W07E04 Inheritance - Delegation
W07E05 Conditionals - Polymorphism
W07E06 Error - Checked Exception
W08E01 Mock Object Pattern with EasyMock

TODO: add easymock code
W08E02 Mock Object Pattern with Mockito

TODO: add mockito code
W08E03 Reflection Test Pattern - JUnit5 test

W08E04 Testing MVC
write test cases for the application developed in W04E01.
W09E01 Dependency Injection with Guice

W09E02 Dependency Injection with Spring:
applying Spring's field-based dependency injection which is done by using the @Autowired annotation

W09E03 Testing a REST Server
test RESTful API for the rental system
W10E01 Strangler Pattern - Strangler Pattern to refactor a monolith to microservices.
W10E02 Decentralized ID Generation
revise the bitwise operators in Java.
W10E03 Circuit Breaker | Microservice patterns - Circuit Breaker
implement a circuit breaker to prevent the DroidFactory from being overwhelmed by repeated calls when an error occurs in the DroidFactoryService
W10E04 Async Messages | Microservice Patterns - Async Messages
hey have created an inbox system where they will receive notifications when a new droid is ready. This way, the operator can continue working on other tasks, and will be alerted when a droid is completed and ready for further processing
W11E01 Blue-Green Deployment
Blue-Green Deployment strategy
1. GreenRecommendationService annotate + implement logic
@Service
@Profile("green")
public class GreenRecommendationService
resources/application.yml add msgTODO
docker-compose.yml:TODO
nginx.conf:TODO
W11E02 Canary Releases
implement a Canary Release strategy using Nginx and Docker containers
improved feature will initially be available to 10% of users
W11E03 Feature Toggles - SimpleFF4J, FF4J
/tumtok/toggle/{featureName}/{value}W11E04 Retry Pattern - implement a retry mechanism to handle these failures.
TODO: add code and annotation
W12E01 Remote control for smart speaker