Skip to content
Merged
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
2 changes: 1 addition & 1 deletion students/812350401/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<!--<version>3.8.1</version>-->
</dependency>
<dependency>
<groupId>com.google.collections</groupId>
Expand All @@ -49,7 +50,6 @@
<artifactId>commons-codec</artifactId>
<version>1.6</version>
</dependency>

</dependencies>
<repositories>
<repository>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package com.coderising.mydp.command;

/**
* Created by thomas_young on 11/8/2017.
* 命令模式
*/
public class Client {

public static void main(String[] args) {
Cook cook = new Cook();
Waitor waitor = new Waitor();

Command command1 = new OrderPorkCommand(cook);
Command command2 = new OrderSteakCommand(cook);

waitor.addOrder(command1);
waitor.addOrder(command2);

waitor.sendOrders();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.coderising.mydp.command;

/**
* Created by thomas_young on 11/8/2017.
*/
public interface Command {
void execute();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package com.coderising.mydp.command;

/**
* Created by thomas_young on 11/8/2017.
*/
public class Cook {

public void cookSteak() {
System.out.println("Steak is ok");
}

public void cookPork() {
System.out.println("Pork is ok");
}

public static void main(String[] args) {
StringBuilder x = new StringBuilder("Hello");
String r1 = x.append(",world").toString();
String r2 = x.append(",world").toString();
System.out.println(r1);
System.out.println(r2);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.coderising.mydp.command;

/**
* Created by thomas_young on 11/8/2017.
*/
public class OrderPorkCommand implements Command {
private Cook cook;

public OrderPorkCommand(Cook cook) {
this.cook = cook;
}
@Override
public void execute() {
cook.cookPork();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.coderising.mydp.command;

/**
* Created by thomas_young on 11/8/2017.
*/
public class OrderSteakCommand implements Command {
private Cook cook;
public OrderSteakCommand(Cook cook) {
this.cook = cook;
}

@Override
public void execute() {
cook.cookSteak();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package com.coderising.mydp.command;

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

/**
* Created by thomas_young on 11/8/2017.
*/
public class Waitor {
List<Command> commands = new ArrayList<>();

public void addOrder(Command command) {
commands.add(command);
}

public void sendOrders() {
commands.stream().forEach(Command::execute);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package com.coderising.mydp.responseChain;

/**
* Created by thomas_young on 11/8/2017.
*/
public abstract class AbstractLogger {
public static final String DEBUG = "DEBUG";
public static final String NOTICE = "NOTICE";
public static final String ERR = "ERR";

/**
* 持有下一个处理请求的对象
*/
private AbstractLogger next = null;

public AbstractLogger getNext() {
return next;
}

public AbstractLogger setNext(AbstractLogger next) {
this.next = next;
return this;
}

public abstract void message(String message, String type);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package com.coderising.mydp.responseChain;

/**
* Created by thomas_young on 11/8/2017.
*/
public class Client {

public static void main(String[] args) {
AbstractLogger logger = new StdoutLogger()
.setNext(new EmailLogger()
.setNext(new FileLogger()));

// 由StdoutLogger处理
logger.message("进入计算函数", AbstractLogger.DEBUG);
// 由StdoutLogger和EmailLogger处理
System.out.println("*****************");
logger.message("第一步已完成", AbstractLogger.NOTICE);
// 由所有logger处理
System.out.println("*****************");
logger.message("一个致命的错误发生了", AbstractLogger.ERR);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.coderising.mydp.responseChain;

/**
* Created by thomas_young on 11/8/2017.
*/
public class EmailLogger extends AbstractLogger {

@Override
public void message(String message, String type) {
System.out.println("EmailLogger处理:" + message);
if (!AbstractLogger.NOTICE.equals(type)) {
getNext().message(message, type);
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.coderising.mydp.responseChain;

/**
* Created by thomas_young on 11/8/2017.
*/
public class FileLogger extends AbstractLogger {
@Override
public void message(String message, String type) {
System.out.println("FileLogger处理:" + message);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.coderising.mydp.responseChain;

/**
* Created by thomas_young on 11/8/2017.
*/
public class StdoutLogger extends AbstractLogger {
@Override
public void message(String message, String type) {
System.out.println("StdoutLogger处理:" + message);
if (!AbstractLogger.DEBUG.equals(type)) {
getNext().message(message, type);
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package com.coderising.myknowledgepoint.myResponseChain;

/**
* Created by thomas_young on 10/8/2017.
* http://www.cnblogs.com/java-my-life/archive/2012/05/28/2516865.html
*/

public class Client {

public static void main(String[] args) {
//先要组装责任链
Handler h1 = new GeneralManager();
Handler h2 = new DeptManager();
Handler h3 = new ProjectManager();
h3.setSuccessor(h2);
h2.setSuccessor(h1);

//开始测试
String test1 = h3.handleFeeRequest("张三", 300);
System.out.println("test1 = " + test1);
String test2 = h3.handleFeeRequest("李四", 300);
System.out.println("test2 = " + test2);
System.out.println("---------------------------------------");

String test3 = h3.handleFeeRequest("张三", 700);
System.out.println("test3 = " + test3);
String test4 = h3.handleFeeRequest("李四", 700);
System.out.println("test4 = " + test4);
System.out.println("---------------------------------------");

String test5 = h3.handleFeeRequest("张三", 1500);
System.out.println("test5 = " + test5);
String test6 = h3.handleFeeRequest("李四", 1500);
System.out.println("test6 = " + test6);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package com.coderising.myknowledgepoint.myResponseChain;

/**
* Created by thomas_young on 10/8/2017.
*/
public class DeptManager extends Handler {

@Override
public String handleFeeRequest(String user, double fee) {

String str = "";
//部门经理的权限只能在1000以内
if(fee < 1000)
{
//为了测试,简单点,只同意张三的请求
if("张三".equals(user))
{
str = "成功:部门经理同意【" + user + "】的聚餐费用,金额为" + fee + "元";
}else
{
//其他人一律不同意
str = "失败:部门经理不同意【" + user + "】的聚餐费用,金额为" + fee + "元";
}
}else
{
//超过1000,继续传递给级别更高的人处理
if(getSuccessor() != null)
{
return getSuccessor().handleFeeRequest(user, fee);
}
}
return str;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package com.coderising.myknowledgepoint.myResponseChain;

/**
* Created by thomas_young on 10/8/2017.
*/
public class GeneralManager extends Handler {

@Override
public String handleFeeRequest(String user, double fee) {

String str = "";
//总经理的权限很大,只要请求到了这里,他都可以处理
if(fee >= 1000)
{
//为了测试,简单点,只同意张三的请求
if("张三".equals(user))
{
str = "成功:总经理同意【" + user + "】的聚餐费用,金额为" + fee + "元";
}else
{
//其他人一律不同意
str = "失败:总经理不同意【" + user + "】的聚餐费用,金额为" + fee + "元";
}
}else {
//如果还有后继的处理对象,继续传递
if(getSuccessor() != null)
{
return getSuccessor().handleFeeRequest(user, fee);
}
}
return str;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package com.coderising.myknowledgepoint.myResponseChain;

/**
* Created by thomas_young on 10/8/2017.
*/
public abstract class Handler {
/**
* 持有下一个处理请求的对象
*/
protected Handler successor = null;
/**
* 取值方法
*/
public Handler getSuccessor() {
return successor;
}
/**
* 设置下一个处理请求的对象
*/
public void setSuccessor(Handler successor) {
this.successor = successor;
}
/**
* 处理聚餐费用的申请
* @param user 申请人
* @param fee 申请的钱数
* @return 成功或失败的具体通知
*/
public abstract String handleFeeRequest(String user , double fee);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package com.coderising.myknowledgepoint.myResponseChain;

/**
* Created by thomas_young on 10/8/2017.
*/
public class ProjectManager extends Handler {

@Override
public String handleFeeRequest(String user, double fee) {

String str = "";
//项目经理权限比较小,只能在500以内
if(fee < 500)
{
//为了测试,简单点,只同意张三的请求
if("张三".equals(user))
{
str = "成功:项目经理同意【" + user + "】的聚餐费用,金额为" + fee + "元";
}else
{
//其他人一律不同意
str = "失败:项目经理不同意【" + user + "】的聚餐费用,金额为" + fee + "元";
}
}else
{
//超过500,继续传递给级别更高的人处理
if(getSuccessor() != null)
{
return getSuccessor().handleFeeRequest(user, fee);
}
}
return str;
}

}
Loading