forked from fuzhengwei/itstack-demo-design
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
7a927be
commit 01abf0c
Showing
16 changed files
with
498 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,7 @@ | ||
# itstack-demo-design | ||
设计模式案例 | ||
# 重学 Java 设计模式 | ||
|
||
- [`重学 Java 设计模式:实战工厂方法模式`](https://bugstack.cn/itstack-demo-design/2020/05/20/%E9%87%8D%E5%AD%A6Java%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F-%E5%AE%9E%E6%88%98%E5%B7%A5%E5%8E%82%E6%96%B9%E6%B3%95%E6%A8%A1%E5%BC%8F.html) | ||
- [`重学 Java 设计模式:实战抽象工厂模式`](https://bugstack.cn/itstack-demo-design/2020/05/24/%E9%87%8D%E5%AD%A6Java%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F-%E6%8A%BD%E8%B1%A1%E5%B7%A5%E5%8E%82%E6%A8%A1%E5%BC%8F.html) | ||
- [`重学 Java 设计模式:实战建造者模式`](https://bugstack.cn/itstack-demo-design/2020/05/26/%E9%87%8D%E5%AD%A6Java%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F-%E5%AE%9E%E6%88%98%E5%BB%BA%E9%80%A0%E8%80%85%E6%A8%A1%E5%BC%8F.html) | ||
- [`重学 Java 设计模式:实战原型模式`](https://bugstack.cn/itstack-demo-design/2020/05/28/%E9%87%8D%E5%AD%A6-Java-%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F-%E5%AE%9E%E6%88%98%E5%8E%9F%E5%9E%8B%E6%A8%A1%E5%BC%8F.html) | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<project xmlns="http:https://maven.apache.org/POM/4.0.0" | ||
xmlns:xsi="http:https://www.w3.org/2001/XMLSchema-instance" | ||
xsi:schemaLocation="http:https://maven.apache.org/POM/4.0.0 http:https://maven.apache.org/xsd/maven-4.0.0.xsd"> | ||
<parent> | ||
<artifactId>itstack-demo-design</artifactId> | ||
<groupId>org.itstack</groupId> | ||
<version>1.0-SNAPSHOT</version> | ||
</parent> | ||
<modelVersion>4.0.0</modelVersion> | ||
|
||
<artifactId>itstack-demo-desgin-4-01</artifactId> | ||
|
||
|
||
</project> |
82 changes: 82 additions & 0 deletions
82
itstack-demo-desgin-4-01/src/main/java/org/itstack/demo/design/QuestionBankController.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,82 @@ | ||
package org.itstack.demo.design; | ||
|
||
import java.util.ArrayList; | ||
import java.util.HashMap; | ||
import java.util.List; | ||
import java.util.Map; | ||
|
||
public class QuestionBankController { | ||
|
||
public String createPaper(String candidate, String number) { | ||
|
||
List<ChoiceQuestion> choiceQuestionList = new ArrayList<ChoiceQuestion>(); | ||
List<AnswerQuestion> answerQuestionList = new ArrayList<AnswerQuestion>(); | ||
|
||
Map<String, String> map01 = new HashMap<String, String>(); | ||
map01.put("A", "JAVA2 EE"); | ||
map01.put("B", "JAVA2 Card"); | ||
map01.put("C", "JAVA2 ME"); | ||
map01.put("D", "JAVA2 HE"); | ||
map01.put("E", "JAVA2 SE"); | ||
|
||
Map<String, String> map02 = new HashMap<String, String>(); | ||
map02.put("A", "JAVA程序的main方法必须写在类里面"); | ||
map02.put("B", "JAVA程序中可以有多个main方法"); | ||
map02.put("C", "JAVA程序中类名必须与文件名一样"); | ||
map02.put("D", "JAVA程序的main方法中如果只有一条语句,可以不用{}(大括号)括起来"); | ||
|
||
Map<String, String> map03 = new HashMap<String, String>(); | ||
map03.put("A", "变量由字母、下划线、数字、$符号随意组成;"); | ||
map03.put("B", "变量不能以数字作为开头;"); | ||
map03.put("C", "A和a在java中是同一个变量;"); | ||
map03.put("D", "不同类型的变量,可以起相同的名字;"); | ||
|
||
Map<String, String> map04 = new HashMap<String, String>(); | ||
map04.put("A", "STRING"); | ||
map04.put("B", "x3x;"); | ||
map04.put("C", "void"); | ||
map04.put("D", "de$f"); | ||
|
||
Map<String, String> map05 = new HashMap<String, String>(); | ||
map05.put("A", "31"); | ||
map05.put("B", "0"); | ||
map05.put("C", "1"); | ||
map05.put("D", "2"); | ||
|
||
choiceQuestionList.add(new ChoiceQuestion("JAVA所定义的版本中不包括", map01, "D")); | ||
choiceQuestionList.add(new ChoiceQuestion("下列说法正确的是", map02, "A")); | ||
choiceQuestionList.add(new ChoiceQuestion("变量命名规范说法正确的是", map03, "B")); | ||
choiceQuestionList.add(new ChoiceQuestion("以下()不是合法的标识符", map04, "C")); | ||
choiceQuestionList.add(new ChoiceQuestion("表达式(11+3*8)/4%3的值是", map05, "D")); | ||
answerQuestionList.add(new AnswerQuestion("小红马和小黑马生的小马几条腿", "4条腿")); | ||
answerQuestionList.add(new AnswerQuestion("铁棒打头疼还是木棒打头疼", "头最疼")); | ||
answerQuestionList.add(new AnswerQuestion("什么床不能睡觉", "牙床")); | ||
answerQuestionList.add(new AnswerQuestion("为什么好马不吃回头草", "后面的草没了")); | ||
|
||
// 输出结果 | ||
StringBuilder detail = new StringBuilder("考生:" + candidate + "\r\n" + | ||
"考号:" + number + "\r\n" + | ||
"--------------------------------------------\r\n" + | ||
"一、选择题" + "\r\n\n"); | ||
|
||
for (int idx = 0; idx < choiceQuestionList.size(); idx++) { | ||
detail.append("第").append(idx + 1).append("题:").append(choiceQuestionList.get(idx).getName()).append("\r\n"); | ||
Map<String, String> option = choiceQuestionList.get(idx).getOption(); | ||
for (String key : option.keySet()) { | ||
detail.append(key).append(":").append(option.get(key)).append("\r\n"); | ||
; | ||
} | ||
detail.append("答案:").append(choiceQuestionList.get(idx).getKey()).append("\r\n\n"); | ||
} | ||
|
||
detail.append("二、问答题" + "\r\n\n"); | ||
|
||
for (int idx = 0; idx < answerQuestionList.size(); idx++) { | ||
detail.append("第").append(idx + 1).append("题:").append(answerQuestionList.get(idx).getName()).append("\r\n"); | ||
detail.append("答案:").append(answerQuestionList.get(idx).getKey()).append("\r\n\n"); | ||
} | ||
|
||
return detail.toString(); | ||
} | ||
|
||
} |
16 changes: 16 additions & 0 deletions
16
itstack-demo-desgin-4-01/src/test/java/org/itstack/demo/desgin/test/ApiTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
package org.itstack.demo.desgin.test; | ||
|
||
import org.itstack.demo.design.QuestionBankController; | ||
import org.junit.Test; | ||
|
||
public class ApiTest { | ||
|
||
@Test | ||
public void test_QuestionBankController() { | ||
QuestionBankController questionBankController = new QuestionBankController(); | ||
System.out.println(questionBankController.createPaper("花花", "1000001921032")); | ||
System.out.println(questionBankController.createPaper("豆豆", "1000001921051")); | ||
System.out.println(questionBankController.createPaper("大宝", "1000001921987")); | ||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<project xmlns="http:https://maven.apache.org/POM/4.0.0" | ||
xmlns:xsi="http:https://www.w3.org/2001/XMLSchema-instance" | ||
xsi:schemaLocation="http:https://maven.apache.org/POM/4.0.0 http:https://maven.apache.org/xsd/maven-4.0.0.xsd"> | ||
<parent> | ||
<artifactId>itstack-demo-design</artifactId> | ||
<groupId>org.itstack</groupId> | ||
<version>1.0-SNAPSHOT</version> | ||
</parent> | ||
<modelVersion>4.0.0</modelVersion> | ||
|
||
<artifactId>itstack-demo-design-4-00</artifactId> | ||
|
||
|
||
</project> |
34 changes: 34 additions & 0 deletions
34
itstack-demo-design-4-00/src/main/java/org/itstack/demo/design/AnswerQuestion.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
package org.itstack.demo.design; | ||
|
||
/** | ||
* 解答题 | ||
*/ | ||
public class AnswerQuestion { | ||
|
||
private String name; // 问题 | ||
private String key; // 答案 | ||
|
||
public AnswerQuestion() { | ||
} | ||
|
||
public AnswerQuestion(String name, String key) { | ||
this.name = name; | ||
this.key = key; | ||
} | ||
|
||
public String getName() { | ||
return name; | ||
} | ||
|
||
public void setName(String name) { | ||
this.name = name; | ||
} | ||
|
||
public String getKey() { | ||
return key; | ||
} | ||
|
||
public void setKey(String key) { | ||
this.key = key; | ||
} | ||
} |
46 changes: 46 additions & 0 deletions
46
itstack-demo-design-4-00/src/main/java/org/itstack/demo/design/ChoiceQuestion.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
package org.itstack.demo.design; | ||
|
||
import java.util.Map; | ||
|
||
/** | ||
* 单选题 | ||
*/ | ||
public class ChoiceQuestion { | ||
|
||
private String name; // 题目 | ||
private Map<String, String> option; // 选项;A、B、C、D | ||
private String key; // 答案;B | ||
|
||
public ChoiceQuestion() { | ||
} | ||
|
||
public ChoiceQuestion(String name, Map<String, String> option, String key) { | ||
this.name = name; | ||
this.option = option; | ||
this.key = key; | ||
} | ||
|
||
public String getName() { | ||
return name; | ||
} | ||
|
||
public void setName(String name) { | ||
this.name = name; | ||
} | ||
|
||
public Map<String, String> getOption() { | ||
return option; | ||
} | ||
|
||
public void setOption(Map<String, String> option) { | ||
this.option = option; | ||
} | ||
|
||
public String getKey() { | ||
return key; | ||
} | ||
|
||
public void setKey(String key) { | ||
this.key = key; | ||
} | ||
} |
29 changes: 29 additions & 0 deletions
29
itstack-demo-design-4-00/src/test/java/org/itstack/demo/design/test/ApiTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
package org.itstack.demo.design.test; | ||
|
||
import com.alibaba.fastjson.JSON; | ||
import org.junit.Test; | ||
|
||
import java.util.ArrayList; | ||
|
||
|
||
public class ApiTest { | ||
|
||
@Test | ||
public void test_clone() throws CloneNotSupportedException { | ||
ArrayList<String> l01 = new ArrayList<String>(); | ||
l01.add("xxx"); | ||
l01.add("yyy"); | ||
|
||
ArrayList<String> l02 = (ArrayList<String>) l01.clone(); | ||
l02.add("zzz"); | ||
|
||
System.out.println(JSON.toJSONString(l01)); | ||
System.out.println(JSON.toJSONString(l02)); | ||
|
||
l01.remove("xxx"); | ||
|
||
System.out.println(JSON.toJSONString(l01)); | ||
System.out.println(JSON.toJSONString(l02)); | ||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<project xmlns="http:https://maven.apache.org/POM/4.0.0" | ||
xmlns:xsi="http:https://www.w3.org/2001/XMLSchema-instance" | ||
xsi:schemaLocation="http:https://maven.apache.org/POM/4.0.0 http:https://maven.apache.org/xsd/maven-4.0.0.xsd"> | ||
<parent> | ||
<artifactId>itstack-demo-design</artifactId> | ||
<groupId>org.itstack</groupId> | ||
<version>1.0-SNAPSHOT</version> | ||
</parent> | ||
<modelVersion>4.0.0</modelVersion> | ||
|
||
<artifactId>itstack-demo-design-4-02</artifactId> | ||
<dependencies> | ||
<dependency> | ||
<groupId>org.itstack</groupId> | ||
<artifactId>itstack-demo-design-4-00</artifactId> | ||
<version>1.0-SNAPSHOT</version> | ||
<scope>compile</scope> | ||
</dependency> | ||
</dependencies> | ||
|
||
|
||
</project> |
82 changes: 82 additions & 0 deletions
82
itstack-demo-design-4-02/src/main/java/org/itstack/demo/design/QuestionBank.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,82 @@ | ||
package org.itstack.demo.design; | ||
|
||
import org.itstack.demo.design.util.Topic; | ||
import org.itstack.demo.design.util.TopicRandomUtil; | ||
|
||
import java.util.ArrayList; | ||
import java.util.Collections; | ||
import java.util.Map; | ||
|
||
public class QuestionBank implements Cloneable { | ||
|
||
private String candidate; // 考生 | ||
private String number; // 考号 | ||
|
||
private ArrayList<ChoiceQuestion> choiceQuestionList = new ArrayList<ChoiceQuestion>(); | ||
private ArrayList<AnswerQuestion> answerQuestionList = new ArrayList<AnswerQuestion>(); | ||
|
||
public QuestionBank append(ChoiceQuestion choiceQuestion) { | ||
choiceQuestionList.add(choiceQuestion); | ||
return this; | ||
} | ||
|
||
public QuestionBank append(AnswerQuestion answerQuestion) { | ||
answerQuestionList.add(answerQuestion); | ||
return this; | ||
} | ||
|
||
@Override | ||
public Object clone() throws CloneNotSupportedException { | ||
QuestionBank questionBank = (QuestionBank) super.clone(); | ||
questionBank.choiceQuestionList = (ArrayList<ChoiceQuestion>) choiceQuestionList.clone(); | ||
questionBank.answerQuestionList = (ArrayList<AnswerQuestion>) answerQuestionList.clone(); | ||
|
||
// 题目乱序 | ||
Collections.shuffle(questionBank.choiceQuestionList); | ||
Collections.shuffle(questionBank.answerQuestionList); | ||
// 答案乱序 | ||
ArrayList<ChoiceQuestion> choiceQuestionList = questionBank.choiceQuestionList; | ||
for (ChoiceQuestion question : choiceQuestionList) { | ||
Topic random = TopicRandomUtil.random(question.getOption(), question.getKey()); | ||
question.setOption(random.getOption()); | ||
question.setKey(random.getKey()); | ||
} | ||
return questionBank; | ||
} | ||
|
||
public void setCandidate(String candidate) { | ||
this.candidate = candidate; | ||
} | ||
|
||
public void setNumber(String number) { | ||
this.number = number; | ||
} | ||
|
||
@Override | ||
public String toString() { | ||
|
||
StringBuilder detail = new StringBuilder("考生:" + candidate + "\r\n" + | ||
"考号:" + number + "\r\n" + | ||
"--------------------------------------------\r\n" + | ||
"一、选择题" + "\r\n\n"); | ||
|
||
for (int idx = 0; idx < choiceQuestionList.size(); idx++) { | ||
detail.append("第").append(idx + 1).append("题:").append(choiceQuestionList.get(idx).getName()).append("\r\n"); | ||
Map<String, String> option = choiceQuestionList.get(idx).getOption(); | ||
for (String key : option.keySet()) { | ||
detail.append(key).append(":").append(option.get(key)).append("\r\n");; | ||
} | ||
detail.append("答案:").append(choiceQuestionList.get(idx).getKey()).append("\r\n\n"); | ||
} | ||
|
||
detail.append("二、问答题" + "\r\n\n"); | ||
|
||
for (int idx = 0; idx < answerQuestionList.size(); idx++) { | ||
detail.append("第").append(idx + 1).append("题:").append(answerQuestionList.get(idx).getName()).append("\r\n"); | ||
detail.append("答案:").append(answerQuestionList.get(idx).getKey()).append("\r\n\n"); | ||
} | ||
|
||
return detail.toString(); | ||
} | ||
|
||
} |
Oops, something went wrong.