Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
55a00f0
feat : 전략 패턴으로 어드벤쳐 게임 시뮬레이터 구현
bombo-dev Jun 6, 2023
95fdecf
feat : 옵저버 패턴 구현
bombo-dev Jun 8, 2023
35a4fec
feat : 총기 구현 데코레이터
bombo-dev Jun 8, 2023
0cebd9f
feat : 커피 전문점 데코레이터
bombo-dev Jun 8, 2023
438bbc0
feat : 옵저버 주식시장 구현
bombo-dev Jun 11, 2023
c9c89b2
feat : User 검증 데코레이터 구현
bombo-dev Jun 11, 2023
5c778a2
feat : 정적 팩토리 메서드인 싱글톤을 이용하여 팩토리 구현
bombo-dev Jun 21, 2023
d34f8ce
feat : 버튼과 체크박스 팩토리 메서드 생성
bombo-dev Jun 21, 2023
4463354
fix : 싱글톤 클래스 접근제어자 수정
bombo-dev Jun 21, 2023
3ffae61
feat : 전체 기능 수행
bombo-dev Jun 21, 2023
22dc445
refactor : 실행 단위 분류
bombo-dev Jun 21, 2023
193a5d9
feat : 입출력 기능 구현
bombo-dev Jun 21, 2023
2361baa
feat : 운영체제를 가지고 있는 enum 클래스 구현
bombo-dev Jun 21, 2023
f4bdee4
feat : command 추상 클래스 구현
bombo-dev Jun 29, 2023
1feb5eb
feat : 복사 기능 추가
bombo-dev Jun 29, 2023
611101a
feat : 잘라내기 커맨드 추가
bombo-dev Jun 29, 2023
d6eab71
feat : 붙여넣기 기능 추가
bombo-dev Jun 29, 2023
709f991
feat : 되돌리기 기능 추가
bombo-dev Jun 29, 2023
9669f00
feat : 명령어를 저장하는 CommandHistory 추가
bombo-dev Jun 29, 2023
6c08359
feat : Editor의 일정 문자열 길이를 선택하는 기능 추가
bombo-dev Jun 29, 2023
a985557
feat : 커맨드 실행
bombo-dev Jun 29, 2023
7e0fceb
init : 기본 파일 추가
bombo-dev Jun 29, 2023
a965e7e
init : chapter7 어댑터 패턴 구현
bombo-dev Jun 29, 2023
79de5f2
feat : 사각 못을 둥근 못으로 바꾸는 어댑터 클래스 구현
bombo-dev Jun 29, 2023
e8d833d
init : chapter7 facade 초기화
bombo-dev Jun 29, 2023
134144f
feat : 퍼싸드 패턴 구현
bombo-dev Jun 29, 2023
77d9a84
반복자 패턴 구현
bombo-dev Jul 14, 2023
ea98784
복합체 패턴 구현
bombo-dev Jul 14, 2023
0d3ae8f
템플릿 메서드 패턴 구현
bombo-dev Jul 14, 2023
899454f
feat : prototype 구현
bombo-dev Jul 29, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions chapter1/jongwoon/strategy/src/adventureGame/GameSimulator.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package adventureGame;

import adventureGame.domain.character.Character;
import adventureGame.domain.character.King;
import adventureGame.domain.character.Queen;
import adventureGame.domain.weapon.BowAndArrowBehavior;

public class GameSimulator {
public static void main(String[] args) {
Character king = new King();
Character queen = new Queen();
king.fight(queen);

king.changeWeapon(new BowAndArrowBehavior());
king.fight(queen);
queen.fight(king);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package adventureGame.domain.character;

import adventureGame.domain.weapon.WeaponBehavior;

public abstract class Character {
String name;
WeaponBehavior weapon;

public void fight(Character character) {
System.out.println(name + "이 무기를 사용하여 공격하였습니다.");
weapon.useWeapon();
character.attacked();
}

public void changeWeapon(WeaponBehavior weapon) {
System.out.println(name + "이 무기를 교체하였습니다.");
this.weapon = weapon;
}

private void attacked() {
System.out.println(name + "이 피해를 입었습니다.");
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package adventureGame.domain.character;

import adventureGame.domain.weapon.SwordBehavior;

public class King extends Character {

public King() {
name = "king";
weapon = new SwordBehavior();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package adventureGame.domain.character;

import adventureGame.domain.weapon.BowAndArrowBehavior;

public class Knight extends Character {
public Knight() {
name = "knight";
weapon = new BowAndArrowBehavior();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package adventureGame.domain.character;

import adventureGame.domain.weapon.KnifeBehavior;

public class Queen extends Character {

public Queen() {
name = "queen";
weapon = new KnifeBehavior();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package adventureGame.domain.character;

import adventureGame.domain.weapon.AxeBehavior;

public class Troll extends Character {

public Troll() {
name = "troll";
weapon = new AxeBehavior();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package adventureGame.domain.weapon;

public class AxeBehavior implements WeaponBehavior {
@Override
public void useWeapon() {
System.out.println("도끼로 내려찍기!");
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package adventureGame.domain.weapon;

public class BowAndArrowBehavior implements WeaponBehavior {
@Override
public void useWeapon() {
System.out.println("활 쏘기!");
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package adventureGame.domain.weapon;

public class KnifeBehavior implements WeaponBehavior {
@Override
public void useWeapon() {
System.out.println("칼로 찌르기!");
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package adventureGame.domain.weapon;

public class SwordBehavior implements WeaponBehavior {
@Override
public void useWeapon() {
System.out.println("칼로 베기!");
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package adventureGame.domain.weapon;

public interface WeaponBehavior {
void useWeapon();
}
11 changes: 11 additions & 0 deletions chapter1/jongwoon/strategy/strategy.iml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>
11 changes: 11 additions & 0 deletions chapter2/chapter2.iml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/jongwoon/src/main/java" isTestSource="false" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>
16 changes: 16 additions & 0 deletions chapter2/jongwoon/src/main/java/Main.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import observer.Observer;
import observer.ObserverConcrete;
import subject.Subject;
import subject.SubjectConcrete;

public class Main {
public static void main(String[] args) {
Subject subject = new SubjectConcrete();
Observer observer1 = new ObserverConcrete("관찰자 1");
Observer observer2 = new ObserverConcrete("관찰자 2");
subject.addObserver(observer1);
subject.addObserver(observer2);

subject.notifyObservers();
}
}
5 changes: 5 additions & 0 deletions chapter2/jongwoon/src/main/java/observer/Observer.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package observer;

public interface Observer {
void update();
}
15 changes: 15 additions & 0 deletions chapter2/jongwoon/src/main/java/observer/ObserverConcrete.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package observer;

public class ObserverConcrete implements Observer {

String name;

public ObserverConcrete(String name) {
this.name = name;
}

@Override
public void update() {
System.out.println(name + "에게 발송 되었습니다.");
}
}
25 changes: 25 additions & 0 deletions chapter2/jongwoon/src/main/java/stock/StockApp.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package stock;

import stock.observer.Customer;
import stock.observer.StockCustomer;
import stock.stocks.repository.StocksRepository;
import stock.subject.Brokerage;
import stock.subject.SamsungBrokerage;

public class StockApp {
public static void main(String[] args) {
Brokerage brokerage = new SamsungBrokerage();
StockCustomer customer1 = new Customer("김봉팔");
StockCustomer customer2 = new Customer("김사지");
customer1.addStocks(StocksRepository.STOCKS_MAP.get("Kakao"));
customer1.addStocks(StocksRepository.STOCKS_MAP.get("Samsung"));

customer2.addStocks(StocksRepository.STOCKS_MAP.get("Kakao"));
customer2.addStocks(StocksRepository.STOCKS_MAP.get("Samsung"));
customer2.addStocks(StocksRepository.STOCKS_MAP.get("Tesla"));

brokerage.addCustomer(customer1);
brokerage.addCustomer(customer2);
brokerage.notifyToCustomer();
}
}
18 changes: 18 additions & 0 deletions chapter2/jongwoon/src/main/java/stock/observer/Customer.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package stock.observer;

import stock.stocks.Stocks;

public class Customer extends StockCustomer {

public Customer(String customerName) {
super(customerName);
}

@Override
public void update() {
System.out.println(customerName + "의 포트폴리오");
for (Stocks stock : stockList) {
System.out.println(stock);
}
}
}
21 changes: 21 additions & 0 deletions chapter2/jongwoon/src/main/java/stock/observer/StockCustomer.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package stock.observer;

import stock.stocks.Stocks;

import java.util.ArrayList;
import java.util.List;

public abstract class StockCustomer {
String customerName;
List<Stocks> stockList = new ArrayList<>();

public StockCustomer(String customerName) {
this.customerName = customerName;
}

public abstract void update();

public void addStocks(Stocks stocks) {
stockList.add(stocks);
}
}
10 changes: 10 additions & 0 deletions chapter2/jongwoon/src/main/java/stock/stocks/Kakao.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package stock.stocks;

import java.math.BigDecimal;

public class Kakao extends Stocks {
public Kakao(BigDecimal stockPrice) {
super(stockPrice);
stockName = "카카오 주식";
}
}
10 changes: 10 additions & 0 deletions chapter2/jongwoon/src/main/java/stock/stocks/Samsung.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package stock.stocks;

import java.math.BigDecimal;

public class Samsung extends Stocks {
public Samsung(BigDecimal stockPrice) {
super(stockPrice);
stockName = "삼성 주식";
}
}
36 changes: 36 additions & 0 deletions chapter2/jongwoon/src/main/java/stock/stocks/Stocks.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package stock.stocks;

import java.math.BigDecimal;
import java.util.Random;

public abstract class Stocks {
protected String stockName;
protected BigDecimal stockPrice;

public Stocks(BigDecimal stockPrice) {
this.stockPrice = stockPrice;
}

public void changeStockPrice() {
int randomMenu = new Random().nextInt(2) + 1;
int dollar = new Random().nextInt(2);
switch (randomMenu) {
case 1:
BigDecimal addMoney = BigDecimal.valueOf(new Random().nextDouble() + dollar);
stockPrice = stockPrice.add(addMoney);
break;
case 2:
BigDecimal subtractMoney = BigDecimal.valueOf(new Random().nextDouble() + dollar);
stockPrice = stockPrice.subtract(subtractMoney);
break;
}
}

@Override
public String toString() {
return "Stocks{" +
"stockName='" + stockName + '\'' +
", stockPrice=" + Math.round(stockPrice.doubleValue() * 100) / 100.0 +
'}';
}
}
10 changes: 10 additions & 0 deletions chapter2/jongwoon/src/main/java/stock/stocks/Tesla.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package stock.stocks;

import java.math.BigDecimal;

public class Tesla extends Stocks {
public Tesla(BigDecimal stockPrice) {
super(stockPrice);
stockName = "테슬라 주식";
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package stock.stocks.repository;

import stock.stocks.Kakao;
import stock.stocks.Samsung;
import stock.stocks.Stocks;
import stock.stocks.Tesla;

import java.math.BigDecimal;
import java.util.LinkedHashMap;
import java.util.Map;

public class StocksRepository {
public static final Map<String, Stocks> STOCKS_MAP = new LinkedHashMap<>();

static {
STOCKS_MAP.put("Kakao", new Kakao(new BigDecimal("43.8")));
STOCKS_MAP.put("Samsung", new Samsung(new BigDecimal("55.91")));
STOCKS_MAP.put("Tesla", new Tesla(new BigDecimal("244.4")));

STOCKS_MAP.forEach((a, b) -> {
System.out.println(a + "의 첫 주가 : " + b);
});
}
}
11 changes: 11 additions & 0 deletions chapter2/jongwoon/src/main/java/stock/subject/Brokerage.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package stock.subject;

import stock.observer.StockCustomer;

public interface Brokerage {
void addCustomer(StockCustomer customer);

void removeCustomer(StockCustomer customer);

void notifyToCustomer();
}
Loading