알고리즘을 사용하는 클라이언트로부터, 독립적으로 알고리즘을 바꿔서 적용시킬 수 있도록 함.🌟 서로 다른 알고리즘들이 존재하고, 실행 중 적합한 알고리즘 선택해서 적용클라이언트에 모든 알고리즘이 존재하면 => 유지 보수가 힘듬새로운 알고리즘을 추가하려면, 기존 코드 수
☁️ 데코레이터 패턴 개념 데코레이터 패턴은 구조 패턴중 하나로, 핵심은 상속을 사용해 구체 클래스들을 만들지 않아도 유연하게 기능 확장을 할 수 있는데 존재한다. 즉, 객체에 추가적인 책임과 요건을 **동적**으로 부여할 수 있다.
두 가지 생성 패턴을 알아볼텐데, 둘다 객체를 생성하는 부분을 분리해서 캡슐화 시켜서 OCP(변경-폐쇄 원칙) 와 DIP(의존성 역전 원칙) 까지 지킬 수 있는 패턴이다.
클래스가 한 개의 인스턴스만을 만들 수 있게 하고, 어디서나 생성된 인스턴스에 접근 가능하게 함java.lang.Runtime.getRuntime()java.lang.Desktop.getDesktop()java.lang.System.getSecurityManager()
요구사항(요청, 명령)을 객체로 캡슐화 시키는 패턴이를 이용해서 1)다른 요구사항을 지닌 클라이언트를 매개변수화 시킬 수 있고, 2)요구사항을 큐에 넣거나 로그로 남길 수 있으며 3)작업 취소(undo) 기능을 지원할 수도 있음이름 : 커맨드 (Command)문제 :
목적 : 클래스의 인터페이스를 클라이언트가 기대하는, 원하는 형태의 다른 인터페이스로 변환호환되지 않는 인터페이스때문에, 동작하지 않는 클래스들을 함께 동작할 수 있도록 만들어줌객체를 감싸는 역할을 함(Wrapper, Object Wrapping)서로 호환되지 않는 두
알고리즘(문제를 푸는 방법)을 뼈대를 정의하고, 일부를 서브 클래스로 위임하는 패턴Stragety : 알고리즘의 전체를 캡슐화해서 넘기는 패턴 템플릿 메소드는 알고리즘 구조를 변경하지 않고 알고리즘의 일부 내용(단계)을 서브 클래스에서 재정의할 수 있도록함이름 : 템
여러 요소들을 담고 있는 객체의 내부 구조에 대한 이해 없이, 각 요소를 순서대로 접근하고 사용할 수 있도록 방법을 제공하는 패턴ArrayList를 비롯한 컬렉션 클래스를 사용하다 보면, 각 요소에 접근해서 작업하는 경우가 있음컬렉션 클래스에는 ArrayList 말고도
Model, View, Controller업무 로직(Business Logic) 및 데이터(Model)와 보이는 부분(View)을 분리뷰와 같은 사용자 인터페이스 로직이 비즈니스 로직보다 더 자주 바뀐다면 MVC를 사용하는 것이 바람직함🌟 화면을 포함하는 사용자 인터