Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
8 changes: 0 additions & 8 deletions chapter1/byeonggon/design_puzzle/behavior/AxeBehavior.java

This file was deleted.

This file was deleted.

9 changes: 0 additions & 9 deletions chapter1/byeonggon/design_puzzle/behavior/KnifeBehavior.java

This file was deleted.

8 changes: 0 additions & 8 deletions chapter1/byeonggon/design_puzzle/behavior/SwordBehavior.java

This file was deleted.

13 changes: 0 additions & 13 deletions chapter1/byeonggon/design_puzzle/character/Character.java

This file was deleted.

9 changes: 0 additions & 9 deletions chapter1/byeonggon/design_puzzle/character/King.java

This file was deleted.

11 changes: 0 additions & 11 deletions chapter1/byeonggon/design_puzzle/character/Knight.java

This file was deleted.

13 changes: 0 additions & 13 deletions chapter1/byeonggon/design_puzzle/character/Queen.java

This file was deleted.

9 changes: 0 additions & 9 deletions chapter1/byeonggon/design_puzzle/character/Troll.java

This file was deleted.

13 changes: 13 additions & 0 deletions chapter1/seungwon/strategyPattern/ActionAdventureSimulator.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import behavior.AxeBehavior;
import character.Character;
import character.Queen;

public class ActionAdventureSimulator {
public static void main(String[] args) {
Character userCharacter = new Queen();
userCharacter.fight();

userCharacter.setWeapon(new AxeBehavior());
userCharacter.fight();
}
}
8 changes: 8 additions & 0 deletions chapter1/seungwon/strategyPattern/behavior/AxeBehavior.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package behavior;

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 behavior;

public class BowAndArrowBehavior implements WeaponBehavior {
@Override
public void useWeapon() {
System.out.println("공격 - 화살쏘기");
}
}
8 changes: 8 additions & 0 deletions chapter1/seungwon/strategyPattern/behavior/KnifeBehavior.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package behavior;

public class KnifeBehavior implements WeaponBehavior {
@Override
public void useWeapon() {
System.out.println("공격 - 칼로 베기");
}
}
8 changes: 8 additions & 0 deletions chapter1/seungwon/strategyPattern/behavior/SwordBehavior.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package behavior;

public class SwordBehavior implements WeaponBehavior {
@Override
public void useWeapon() {
System.out.println("공격 - 검 휘두르기!");
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
package chapter1.behavior;
package behavior;

public interface WeaponBehavior {
void useWeapon();
}
}
14 changes: 14 additions & 0 deletions chapter1/seungwon/strategyPattern/character/Character.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package character;

import behavior.WeaponBehavior;

public abstract class Character {
WeaponBehavior weapon;

public abstract void fight();

public void setWeapon(WeaponBehavior w) {
this.weapon = w;
}

}
14 changes: 14 additions & 0 deletions chapter1/seungwon/strategyPattern/character/King.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package character;

import behavior.KnifeBehavior;

public class King extends Character {
public King(){
setWeapon(new KnifeBehavior());
}
@Override
public void fight() {
System.out.println("공격 개시 - King");
weapon.useWeapon();
}
}
14 changes: 14 additions & 0 deletions chapter1/seungwon/strategyPattern/character/Knight.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package character;

import behavior.SwordBehavior;

public class Knight extends Character {
public Knight(){
setWeapon(new SwordBehavior());
}
@Override
public void fight() {
System.out.println("공격 개시 - Knight");
weapon.useWeapon();
}
}
14 changes: 14 additions & 0 deletions chapter1/seungwon/strategyPattern/character/Queen.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package character;

import behavior.BowAndArrowBehavior;

public class Queen extends Character {
public Queen(){
setWeapon(new BowAndArrowBehavior());
}
@Override
public void fight() {
System.out.println("공격 개시 - Queen");
weapon.useWeapon();
}
}
14 changes: 14 additions & 0 deletions chapter1/seungwon/strategyPattern/character/Troll.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package character;

import behavior.AxeBehavior;

public class Troll extends Character {
public Troll(){
setWeapon(new AxeBehavior());
}
@Override
public void fight() {
System.out.println("공격 개시 - Troll");
weapon.useWeapon();
}
}
5 changes: 5 additions & 0 deletions chapter2/seungwon/observerPattern/Observer/Observer.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package tmp.observerPattern;

public interface Observer {
public void update();
}
27 changes: 27 additions & 0 deletions chapter2/seungwon/observerPattern/Observer/Subsribers.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package tmp.observerPattern;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Subsribers implements Observer {
private final String name;
private final List<StockCompany> subscribingCompanies = new ArrayList<>();
private final Map<String, Double> dailyQuoteByCompany = new HashMap<String, Double>();

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

public String getName() {
return name;
}

@Override
public void update() {
for(StockCompany company:subscribingCompanies){
dailyQuoteByCompany.put(company.code, company.getDailyQuote());
}
}
}
41 changes: 41 additions & 0 deletions chapter2/seungwon/observerPattern/Subject/StockCompany.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package tmp.observerPattern;

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

public class StockCompany implements Subject {
public final String code;
private final List<Double> dailyQuotes = new ArrayList<>();
private final List<Observer> observers = new ArrayList<>();

public StockCompany(String code) {
this.code = code;
}

@Override
public void notifyObservers() {
for (Observer observer : observers) {
observer.update();
}
}

@Override
public void registerObserver(Observer observer) {
observers.add(observer);
}

@Override
public void removeObserver(Observer observer) {
observers.remove(observer);
}

public Double getDailyQuote() {
int recentIdx = dailyQuotes.size() - 1;
return dailyQuotes.get(recentIdx);
}

public void updateDailyQuote(Double dailyQuote) {
dailyQuotes.add(dailyQuote);
notifyObservers();
}
}
9 changes: 9 additions & 0 deletions chapter2/seungwon/observerPattern/Subject/Subject.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package tmp.observerPattern;

public interface Subject {
void notifyObservers();

void registerObserver(Observer observer);

void removeObserver(Observer observer);
}
9 changes: 9 additions & 0 deletions chapter3/seungwon/decoratorPattern/DataProcessor.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package tmp.decoratorPattern;

public interface DataProcessor {
String getData();

void setData(String data);

void process();
}
34 changes: 34 additions & 0 deletions chapter3/seungwon/decoratorPattern/Decryptor.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package tmp.decoratorPattern;

public class Decryptor implements DataProcessor {
private final DataProcessor dataProcessor;

public Decryptor(DataProcessor dataProcessor) {
this.dataProcessor = dataProcessor;
}

@Override
public void process() {
dataProcessor.process();
decryptData();
}

private void decryptData() {
String data = dataProcessor.getData();
StringBuilder decryptedData = new StringBuilder();
for (int i = data.length() - 1; i >= 0; i--) {
decryptedData.append(data.charAt(i));
}
dataProcessor.setData(decryptedData.toString());
}

@Override
public String getData() {
return dataProcessor.getData();
}

@Override
public void setData(String data) {
dataProcessor.setData(data);
}
}
Loading