Skip to content
Open
Show file tree
Hide file tree
Changes from 6 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