Skip to content

템플릿메소드, 전략, 퍼사드, 싱글톤 패턴 #4

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 9 commits into
base: master
Choose a base branch
from
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
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
.gradle/
.build/
.idea/
gradlew*
21 changes: 21 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
plugins {
id 'java'
}

group 'org.example'
version '1.0-SNAPSHOT'

sourceCompatibility = 1.8

repositories {
mavenCentral()
}

test {
useJUnitPlatform()
}

dependencies {
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.3.1'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.3.1'
}
Binary file not shown.
Binary file added build/classes/java/main/command/AddEmploy.class
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file added build/classes/java/main/command/Client.class
Binary file not shown.
Binary file added build/classes/java/main/command/Transaction.class
Binary file not shown.
Binary file added build/classes/java/main/templatemethod/Client.class
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file added build/classes/java/main/templatemethod/Door.class
Binary file not shown.
Binary file not shown.
Binary file added build/classes/java/main/templatemethod/LgMotor.class
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file added build/libs/design-pattern-1.0-SNAPSHOT.jar
Binary file not shown.
2 changes: 2 additions & 0 deletions build/tmp/jar/MANIFEST.MF
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Manifest-Version: 1.0

Binary file added gradle/wrapper/gradle-wrapper.jar
Binary file not shown.
5 changes: 5 additions & 0 deletions gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
15 changes: 15 additions & 0 deletions src/main/java/abstractserver/example/Light.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package abstractserver.example;

public class Light implements Swtichable{

@Override
public void on() {
System.out.println("Light On");

}

@Override
public void off() {
System.out.println("Light Off");
}
}
10 changes: 10 additions & 0 deletions src/main/java/abstractserver/example/Switch.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package abstractserver.example;

public class Switch {
public static void main(String[] args) {
Swtichable swtichable = new Light();

swtichable.on();
swtichable.off();
}
}
6 changes: 6 additions & 0 deletions src/main/java/abstractserver/example/Swtichable.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package abstractserver.example;

public interface Swtichable {
void on();
void off();
}
11 changes: 11 additions & 0 deletions src/main/java/adapter/DedicatedModem.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package adapter;

public class DedicatedModem {
public void send() {
System.out.println("Dedicated Modem send");
}

public void receive() {
System.out.println("Dedicated Modem receive");
}
}
30 changes: 30 additions & 0 deletions src/main/java/adapter/DedicatedModemAdapter.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package adapter;

import bridge.Modem;

public class DedicatedModemAdapter implements Modem {
private DedicatedModem dedicatedModem;

public DedicatedModemAdapter(DedicatedModem delegateModem) {
this.dedicatedModem = delegateModem;
}

@Override
public void dial(char[] a) {
}

@Override
public void hangup() {

}

@Override
public void send() {
dedicatedModem.send();
}

@Override
public void receive() {
dedicatedModem.receive();
}
}
10 changes: 10 additions & 0 deletions src/main/java/adapter/Deduser.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package adapter;

public class Deduser {
private DedicatedModem modem = new DedicatedModem();

public void messageProcess() {
this.modem.send();
this.modem.receive();
}
}
11 changes: 11 additions & 0 deletions src/main/java/adapter/ModemImpl.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package adapter;

public class ModemImpl {
public void dial(char[] a) {
System.out.println("Modem Impl dial");
}

public void hangup() {
System.out.println("Modem Impl hangup");
}
}
30 changes: 30 additions & 0 deletions src/main/java/adapter/ModemImplAdapter.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package adapter;

import bridge.Modem;

public class ModemImplAdapter implements Modem {
private ModemImpl modemImpl;

public ModemImplAdapter(ModemImpl modemImpl) {
this.modemImpl = modemImpl;
}
@Override
public void dial(char[] a) {

}

@Override
public void hangup() {

}

@Override
public void send() {

}

@Override
public void receive() {

}
}
28 changes: 28 additions & 0 deletions src/main/java/bridge/DedModemController.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package bridge;

public class DedModemController extends ModemConnectionController {
public DedModemController(ModemImplementation modemImplementation) {
super(modemImplementation);
}

@Override
protected void dialImpl(char[] a) {
System.out.println("DedModem DialImpl");
// super.dialImpl(a);
}

@Override
protected void hangImpl() {
System.out.println("DedModem hangImpl");
}

@Override
protected void sendImpl() {
// super.sendImpl();
}

@Override
protected void receiveImpl() {
// super.receiveImpl();
}
}
6 changes: 6 additions & 0 deletions src/main/java/bridge/DedicatedModem.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package bridge;

public interface DedicatedModem {
void send();
void receive();
}
8 changes: 8 additions & 0 deletions src/main/java/bridge/DialModemController.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package bridge;

public class DialModemController extends ModemConnectionController {
public DialModemController(ModemImplementation modemImplementation) {
super(modemImplementation);
}

}
23 changes: 23 additions & 0 deletions src/main/java/bridge/HayesModem.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package bridge;

public class HayesModem implements ModemImplementation {
@Override
public void dial(char[] a) {
System.out.println("hayes modem dial");
}

@Override
public void hangup() {
System.out.println("hayes modem hangup");
}

@Override
public void send() {
System.out.println("hayes modem send");
}

@Override
public void receive() {
System.out.println("hayes modem receive");
}
}
8 changes: 8 additions & 0 deletions src/main/java/bridge/Modem.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package bridge;

public interface Modem {
void dial(char[] a);
void hangup();
void send();
void receive();
}
11 changes: 11 additions & 0 deletions src/main/java/bridge/ModemClients.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package bridge;

public class ModemClients {
public static void main(String[] args) {
Modem modem = new DedModemController(new UsRoboticsModem());

modem.receive();
modem.send();

}
}
45 changes: 45 additions & 0 deletions src/main/java/bridge/ModemConnectionController.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
package bridge;

public abstract class ModemConnectionController implements Modem, DedicatedModem {
ModemImplementation modemImplementation;

public ModemConnectionController(ModemImplementation modemImplementation) {
this.modemImplementation = modemImplementation;
}

protected void dialImpl(char[] a) {
modemImplementation.dial(a);
}

protected void hangImpl() {
modemImplementation.hangup();
}

protected void sendImpl() {
modemImplementation.send();
}

protected void receiveImpl() {
modemImplementation.receive();;
}

@Override
public void dial(char[] a) {
this.dialImpl(a);
}

@Override
public void hangup() {
this.hangImpl();
}

@Override
public void send() {
this.sendImpl();
}

@Override
public void receive() {
this.receiveImpl();
}
}
11 changes: 11 additions & 0 deletions src/main/java/bridge/ModemImplementation.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package bridge;

public interface ModemImplementation {
void dial(char[] a);

void hangup();

void send();

void receive();
}
25 changes: 25 additions & 0 deletions src/main/java/bridge/UsRoboticsModem.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package bridge;

import bridge.Modem;

public class UsRoboticsModem implements ModemImplementation {
@Override
public void dial(char[] a) {
System.out.println("US Robotics dial");
}

@Override
public void hangup() {
System.out.println("US Robotics hangup");
}

@Override
public void send() {
System.out.println("US Robotics send");
}

@Override
public void receive() {
System.out.println("US Robotics receive");
}
}
15 changes: 15 additions & 0 deletions src/main/java/command/AddComissionedEmployeeTransaction.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package command;

public class AddComissionedEmployeeTransaction extends AddEmployTransaction {
private double commission;

public AddComissionedEmployeeTransaction(String name, int employeeId, String address, int salary, double commission) {
super(name, employeeId, address, salary);
this.commission = commission;
}

@Override
public void execute() {
System.out.printf("%s 직원은 월급을 %d원을 받고 추가 수수료율 %f%%를 적용합니다.\n", this.getName(), this.getSalary(), this.commission);
}
}
16 changes: 16 additions & 0 deletions src/main/java/command/AddEmploy.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package command;

/**
* Invoker
*/
public class AddEmploy {
private Transaction transaction;

public AddEmploy(Transaction transaction) {
this.transaction = transaction;
}

public void add() {
transaction.execute();
}
}
Loading