[디자인 패턴] Decorator 패턴 포스팅 썸네일 이미지

디자인패턴

[디자인 패턴] Decorator 패턴

- 정의 객체의 결합 을 통해 기능을 동적으로 유연하게 확장 할 수 있게 해주는 패턴이다 - UML 1. Picture인터페이스를 만들고 이름을 반환하는 getName메소드를 선언한다 2. Picture인터페이스를 구현하는 BlueBackgroundPicture와 WhiteBackgroundPicture클래스를 만들고 getName함수를 오버라이딩하여 배경색상을 출력하도록 한다 3. Object추상클래스를 정의하여 Picture인터페이스를 담아둘 수 있게 하고, getName메소드를 선언하여 이름을 반환할 수 있도록 한다 4. Object추상클래스를 상속하는 Cloud, Tree, Flower클래스를 정의하고 getName메소드를 오버라이딩하여 각각의 물체 이름을 반환하도록 한다. 생성자를 통해 Pict..

2020.03.15 게시됨

[디자인 패턴] Composite 패턴 포스팅 썸네일 이미지

디자인패턴

[디자인 패턴] Composite 패턴

- 정의 단일 객체와 복합 객체를 동일하게 처리 할 수 있게끔 하는 패턴이다. - UML 1. Component라는 인터페이스 혹은 추상클래스를 만든다 2. Component를 상속 혹은 구현하는 Stuff클래스를 만든다 3. Component를 상속 혹은 구현하는 Box클래스를 만들고 Component타입을 담을 수 있는 List와 추가 및 삭제에 필요한 메서드를 정의한다 - 코드 Component abstract class public abstract class Component { protected String name; public Component(String name) { this.name = name; } } Stuff class public class Stuff extends Compone..

2020.03.13 게시됨

[디자인 패턴] Bridge 패턴 포스팅 썸네일 이미지

디자인패턴

[디자인 패턴] Bridge 패턴

- 정의 구현으로부터 추상레이어(기능)를 분리하여 각자 독립적으로 변형할 수 있게 하는 패턴이다 즉, 구현과 기능을 분리하여 구현한다 - UML 1. Making인테스페이스를 만들고 이를 구현하는 MakingApartment와 MakingVilla클래스를 만든다. 2. House추상클래스를 만들고 이를 상속하는 Apartment와 Villa클래스를 만든다 - 코드 Making interface public interface Making { public void buildSkeleton(); public void cementWall(); } MakingApartment class public class MakingApartment implements Making{ @Override public void b..

2020.03.12 게시됨

[디자인 패턴] AbstractFactory 패턴 포스팅 썸네일 이미지

디자인패턴

[디자인 패턴] AbstractFactory 패턴

- 정의 서로 관련이 있는 객체들을 묶고 조건에 따라 관련된 객체들을 한꺼번에 객체를 생성하는 패턴이다 - UML 1. Food인터페이스를 만들고 이를 구현하는 WinterFood와 SummerFood클래스를 만든다 2. Clothes인터페이스를 만들고 이를 구현하는 WinterClothes와 SummerClothes클래스를 만든다 3. SeasonPlanFactory인터페이스를 만들고 이를 구현하는 SummerPlan과 WinterPlan클래스를 만들어 계절별로 계획을 실행할 수 있도록 한다 - 코드 Food interface public interface Food { public void eat(); } WinterFood class public class WinterFood implements Fo..

2020.03.11 게시됨

[디자인 패턴] Builder 패턴 포스팅 썸네일 이미지

디자인패턴

[디자인 패턴] Builder 패턴

- 정의 복잡한 단계로 생성되는 생성자를 더 쉽고 가독성이 높게 생성할 수 있도록 고안된 패턴이다 - UML 1. Computer클래스를 만들고 cpu, ram, storage를 멤버 변수로 갖는다. Getter와 Setter를 설정하고 생성자를 정의한다 2. Computer객체 생성을 도와주는 ComputerBuilder클래스를 만든다. 이 클래스 역시 cpu, ram, storage를 멤버 변수로 갖는다. cpu, ram, storage 메소드를 통해 값을 저장하고 builder메소드로 Computer객체를 생성한다 - 코드 Computer class public class Computer { private String cpu; private String ram; private String stora..

2020.03.10 게시됨

[디자인 패턴] ProtoType 패턴 포스팅 썸네일 이미지

디자인패턴

[디자인 패턴] ProtoType 패턴

- 정의 인스턴스를 생성할 때, 기존에 생성된 인스턴스를 복사하여 새로운 인스턴스를 생성하는 패턴이다 - UML 1. Programming클래스를 선언하고 os, network, db를 멤버 변수로 갖는다. 각각의 변수마다 getter와 setter를 설정해주고 copy함수를 통해 인스턴스를 복사할 수 있도록 한다 - 코드 Programming class public class Programming implements Cloneable{ private String os; private String network; private String db; public String getOs() { return os; } public void setOs(String os) { this.os = os; } publi..

2020.02.11 게시됨

[디자인 패턴] Singleton 패턴 포스팅 썸네일 이미지

디자인패턴

[디자인 패턴] Singleton 패턴

- 정의 하나의 인스턴스만을 생성하고, 인스턴스를 어디서든 참조할 수 있도록 하는 패턴이다 - UML 1. SystemSpeaker클래스를 선언하고 int형 volume, SystemSpeaker형 instance를 static으로 선언한다. instance는 static형이기 때문에 어디서든 참조가 가능하고 모든 SystemSpeaker객체가 instance를 공유한다 - 코드 SystemSpeaker class public class SystemSpeaker { static private SystemSpeaker instance; private int volume; private SystemSpeaker() { volume=5; } public static SystemSpeaker getInstanc..

2020.02.10 게시됨

카테고리 없음

백준 1931 - 회의실배정

문제 한 개의 회의실이 있는데 이를 사용하고자 하는 N개의 회의들에 대하여 회의실 사용표를 만들려고 한다. 각 회의 I에 대해 시작시간과 끝나는 시간이 주어져 있고, 각 회의가 겹치지 않게 하면서 회의실을 사용할 수 있는 최대수의 회의를 찾아라. 단, 회의는 한번 시작하면 중간에 중단될 수 없으며 한 회의가 끝나는 것과 동시에 다음 회의가 시작될 수 있다. 회의의 시작시간과 끝나는 시간이 같을 수도 있다. 이 경우에는 시작하자마자 끝나는 것으로 생각하면 된다. 입력 첫째 줄에 회의의 수 N(1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N+1 줄까지 각 회의의 정보가 주어지는데 이것은 공백을 사이에 두고 회의의 시작시간과 끝나는 시간이 주어진다. 시작 시간과 끝나는 시간은 231-1보다 작거나 ..

2020.02.10 게시됨