목록2024/08 (4)
SW
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/ctbMAL/btsJlx0kIbu/X3Rd378DUKcixgIMTktYg1/img.jpg)
템플릿 메소드템플릿 메소드는 알고리즘의 각 단계를 정의하며, 서브클래스에서 일부 단계를 구현할 수 있도록 유도합니다. 추상 클래스 - CaffeineBeverageabstract class CaffeineBeverage { // 템플릿 메서드 final void prepareRecipe() { boilWater(); brew(); pourInCup(); if (customerWantsCondiments()) { addCondiments(); } } abstract void brew(); abstract void addCondiments(); void boilWater() { Sy..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/r9Mot/btsJluCs2il/9tkIAeOkfSewkTuy6sdJ10/img.jpg)
1. 객체지향 어댑터어댑터는 클라이언트로부터 요청을 받아서 새로운 업체에서 제공하는 클래스를 클라이언트가 받아들일 수 있는 형태의 요청으로 변환해주는 중개인 역할을 합니다.Duck과 Turkey 예시를 보겠습니다.public interface Duck { void quack(); void fly();}public interface Turkey { void gobble(); void fly();}public class TurkeyAdapter implements Duck { Turkey turkey; public TurkeyAdapter(Turkey turkey) { this.turkey = turkey; } @Override public voi..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cgrrWm/btsI4sMZycM/DK96MbGKL5HT5SCvckAWpk/img.jpg)
1. 커맨드 패턴 소개커맨드 패턴은 요청을 객체로 캡슐화하여 서로 다른 요청을 매개변수화하거나, 요청의 취소 및 재실행 등을 가능하게 하는 디자인 패턴입니다. 이 패턴을 사용하면 요청을 처리하는 객체(Receiver)와 요청을 발행하는 객체(Client)를 분리할 수 있습니다.처음에 말만 들어서는 이해가 잘 안가니 아래 내용을 따라가 보겠습니다. 객체 마을 식당 예시고객: 요청을 발행하는 역할 (커맨드 객체를 생성).종업원: 커맨드 객체를 전달하는 역할.주방장: 커맨드 객체에 따라 실제로 작업을 수행하는 역할. 주문서 (Command 객체):역할: 주문서 객체는 주문 내용을 캡슐화합니다. 이는 요청을 특정한 형식으로 묶어서 다른 객체에게 전달할 수 있도록 하는 역할을 합니다.특징: 주문서에는 orderU..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bX1HVG/btsI3dgF2Wz/rlHcDPQ42gRrk5grSKKrnK/img.jpg)
1. 싱글턴 패턴 vs 전역 변수전역 변수의 단점은 애플리케이션 시작 시 객체가 생성되어 자원을 낭비할 수 있다는 것입니다.예를 들어, 전역 변수에 자원을 많이 차지하는 객체를 대입했지만, 애플리케이션 종료까지 사용되지 않는다면 쓸모없는 자원 낭비가 됩니다. 이를 방지하기 위해 싱글턴 패턴을 사용하면 필요할 때만 객체를 생성할 수 있습니다.2. 고전적인 싱글턴 패턴 구현법클래스 내에서 자신의 유일한 인스턴스를 정적 변수로 보유클래스 내부에 static 변수를 사용하여 자신의 인스턴스를 저장합니다.생성자를 private으로 설정외부에서 객체를 생성하지 못하도록 생성자를 private으로 선언합니다.이렇게 하면 클래스 외부에서는 새로운 인스턴스를 만들 수 없습니다.유일한 인스턴스에 접근할 수 있는 정적 메서..