Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
3f81baf
Merge pull request #3 from onlyliuxin/master
Jun 21, 2017
29e4066
Merge pull request #4 from onlyliuxin/master
Jun 26, 2017
3c2f342
add project of builder pattern
Jul 17, 2017
d038521
atm homework
Jul 17, 2017
4aec6b8
Merge pull request #6 from onlyliuxin/master
miniyk2012 Jul 17, 2017
5d7ace3
Builder作业
miniyk2012 Jul 17, 2017
3c034cd
Merge remote-tracking branch 'onlyliuxin/master'
GordenChow Jul 18, 2017
d20ea19
正则表达式init
miniyk2012 Jul 18, 2017
27b07be
regex调试
miniyk2012 Jul 18, 2017
9f32ea3
模板替换
miniyk2012 Jul 18, 2017
b9815bb
Add Builder homework
jjyyjjyy Jul 19, 2017
10cd690
正则2
miniyk2012 Jul 19, 2017
27d3f86
Little fix
miniyk2012 Jul 19, 2017
8b1df6c
正则表达式3
miniyk2012 Jul 19, 2017
57a3406
提交builder作业
GordenChow Jul 21, 2017
28ee497
Merge pull request #5 from onlyliuxin/master
Jul 21, 2017
892f1bc
分别实现了两层嵌套和多层嵌套的XML结点生成器
Jul 21, 2017
bc2ecb5
tagBuilder and singleton
Jul 21, 2017
b757eef
builder
Jul 22, 2017
c813af6
Merge pull request #7 from onlyliuxin/master
miniyk2012 Jul 23, 2017
94a5da4
add implementation code
onlyliuxin Jul 23, 2017
f1e2595
Merge branch 'master' of https://github.com/onlyliuxin/coding2017
onlyliuxin Jul 23, 2017
bfd3d88
add composite pattern
onlyliuxin Jul 23, 2017
f69d4e3
add bridge pattern
onlyliuxin Jul 23, 2017
8807be3
builder
Jul 23, 2017
aa66ae2
Merge pull request #8 from onlyliuxin/master
miniyk2012 Jul 23, 2017
c916996
[CI] 把老师的代码移动到我的目录中
miniyk2012 Jul 23, 2017
8c2973b
[feature] atm说明文件
miniyk2012 Jul 23, 2017
86a0289
20170724_1544_homework
orajavac Jul 24, 2017
a4797a1
[feature] bridge(桥接)模式
miniyk2012 Jul 24, 2017
5e10c45
[feature] 装饰者模式
miniyk2012 Jul 25, 2017
b8a86a5
Merge pull request #528 from orajavac/master
onlyliuxin Jul 25, 2017
0a0c646
Merge pull request #526 from lorcx/master
onlyliuxin Jul 25, 2017
bbc6b4f
Merge pull request #524 from guoshenghui/master
onlyliuxin Jul 25, 2017
210f773
Merge pull request #522 from lanyuanxiaoyao/master
onlyliuxin Jul 25, 2017
b8ce344
Merge pull request #521 from GordenChow/master
onlyliuxin Jul 25, 2017
3f47a6f
Merge pull request #516 from jy97799/master
onlyliuxin Jul 25, 2017
4b68c39
Merge pull request #513 from miniyk2012/master
onlyliuxin Jul 25, 2017
9e514d7
Merge pull request #512 from starlight0405/master
onlyliuxin Jul 25, 2017
01331f6
Merge pull request #511 from yangzhm/master
onlyliuxin Jul 25, 2017
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
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.coderising.dp.bridge;

public class GraphicLibrary1 {
public void draw_a_line(int x1,int y1,int x2,int y2){

}
public void draw_a_circle(int x,int y, int r){

}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.coderising.dp.bridge;

public class GraphicLibrary2 {
public void drawLine(int x1,int x2,int y1,int y2){

}
public void drawCircle(int x,int y, int r){

}

}
Original file line number Diff line number Diff line change
@@ -1,30 +1,37 @@
package com.coderising.dp.builder;

public class TagBuilder {

private TagNode rootNode;
private TagNode currentNode;
private TagNode parentNode;
public TagBuilder(String rootTagName){

rootNode = new TagNode(rootTagName);
currentNode = rootNode;
parentNode = null;
}

public TagBuilder addChild(String childTagName){

return null;
parentNode = this.currentNode;
this.currentNode = new TagNode(childTagName);
parentNode.add(currentNode);
return this;
}
public TagBuilder addSibling(String siblingTagName){


return null;
this.currentNode = new TagNode(siblingTagName);
parentNode.add(this.currentNode);
return this;

}
public TagBuilder setAttribute(String name, String value){

return null;
this.currentNode.setAttribute(name, value);
return this;
}
public TagBuilder setText(String value){

return null;
this.currentNode.setValue(value);
return this;
}
public String toXML(){
return null;
return this.rootNode.toXML();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.coderising.dp.composite;

public class Line implements Shape {

@Override
public void draw() {


}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.coderising.dp.composite;

public class Rectangle implements Shape {

@Override
public void draw() {
// TODO Auto-generated method stub

}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package com.coderising.dp.composite;

public interface Shape {
public void draw();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.coderising.dp.composite;

public class Square implements Shape {

@Override
public void draw() {
// TODO Auto-generated method stub

}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.coderising.dp.composite;

public class Text implements Shape {

@Override
public void draw() {
// TODO Auto-generated method stub

}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
package com.coderising.dp.builder;

import java.util.List;

public class TagBuilder {
private TagNode root;
private TagNode now;
private TagNode prev;
public TagBuilder(String rootTagName) {
root=new TagNode(rootTagName);
now=root;
}

public TagBuilder addChild(String childTagName) {
prev=now;
now=new TagNode(childTagName);
prev.add(now);

return this;
}

public TagBuilder addSibling(String siblingTagName) {
List<TagNode> children=prev.getChildren();
now=new TagNode(siblingTagName);
children.add(now);
return this;

}

public TagBuilder setAttribute(String name, String value) {
now.setAttribute(name, value);
return this;
}

public TagBuilder setText(String value) {

return this;
}

public String toXML() {
return root.toXML();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
package com.coderising.dp.builder;

import static org.junit.Assert.assertEquals;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;

public class TagBuilderTest {
@Before
public void setUp() throws Exception {
}

@After
public void tearDown() throws Exception {
}

@Test
public void testToXML() {

TagBuilder builder = new TagBuilder("order");

String xml = builder.addChild("line-items")
.addChild("line-item").setAttribute("pid", "P3677").setAttribute("qty", "3")
.addSibling("line-item").setAttribute("pid", "P9877").setAttribute("qty", "10")
.toXML();

String expected = "<order>"
+ "<line-items>"
+ "<line-item pid=\"P3677\" qty=\"3\"/>"
+ "<line-item pid=\"P9877\" qty=\"10\"/>"
+ "</line-items>"
+ "</order>";

System.out.println(xml);
assertEquals(expected, xml);

// com.oracle.nio.BufferSecrets
//
// com.sun.corba.se.spi.extension.ServantCachingPolicy
//
// java.net.ProxySelector
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
package com.coderising.dp.builder;

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

public class TagNode {
private String tagName;
private String tagValue;
private List<TagNode> children = new ArrayList<>();
private List<Attribute> attributes = new ArrayList<>();

public TagNode(String name){
this.tagName = name;
}
public void add(TagNode child){
this.children.add(child);
}
public void setAttribute(String name, String value) {
Attribute attr = findAttribute(name);
if(attr != null){
attr.value = value;
return;
}

attributes.add(new Attribute(name,value));
}
private Attribute findAttribute(String name){
for(Attribute attr : attributes){
if(attr.name.equals(name)){
return attr;
}
}
return null;
}
public void setValue(String value) {
this.tagValue = value;

}
public String getTagName() {
return tagName;
}
public List<TagNode> getChildren() {
return children;
}

private static class Attribute{
public Attribute(String name, String value) {
this.name = name;
this.value = value;
}
String name;
String value;

}
public String toXML(){
return toXML(this);
}
private String toXML(TagNode node){
StringBuilder buffer = new StringBuilder();
buffer.append("<").append(node.tagName);
if(node.attributes.size()> 0){
for(int i=0;i<node.attributes.size();i++){
Attribute attr = node.attributes.get(i);
buffer.append(" ").append(toXML(attr));
}
}
if(node.children.size()== 0){
buffer.append("/>");
return buffer.toString();
}
buffer.append(">");
for(TagNode childNode : node.children){
buffer.append(toXML(childNode));
}
buffer.append("</").append(node.tagName).append(">");


return buffer.toString();
}
private String toXML(Attribute attr){
return attr.name+"=\""+attr.value + "\"";
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
package com.coderings.dp.builder;

public class TagBuilder {

final TagNode rootNode;

TagNode iteratorNode;

TagNode prevIteratorNode;

public TagBuilder(String rootTagName) {
rootNode = new TagNode(rootTagName);
iteratorNode = rootNode;
prevIteratorNode = rootNode;
}

public TagBuilder addChild(String childTagName) {
TagNode tagNode = new TagNode(childTagName);
iteratorNode.add(tagNode);

prevIteratorNode = iteratorNode;
iteratorNode = tagNode;

return this;
}

public TagBuilder addSibling(String siblingTagName) {
TagNode tagNode = new TagNode(siblingTagName);
prevIteratorNode.add(tagNode);

iteratorNode = tagNode;

return this;
}

public TagBuilder setAttribute(String name, String value) {
iteratorNode.setAttribute(name, value);
return this;
}

public TagBuilder setText(String value) {
iteratorNode.setValue(value);
return this;
}

public String toXML() {
return rootNode.toXML();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
package com.coderings.dp.builder;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import static org.junit.Assert.assertEquals;

public class TagBuilderTest {

@Before
public void setUp() throws Exception {
}

@After
public void tearDown() throws Exception {
}

@Test
public void testToXML() {

TagBuilder builder = new TagBuilder("order");

String xml = builder.addChild("line-items")
.addChild("line-item").setAttribute("pid", "P3677").setAttribute("qty", "3")
.addSibling("line-item").setAttribute("pid", "P9877").setAttribute("qty", "10")
.toXML();

String expected = "<order>"
+ "<line-items>"
+ "<line-item pid=\"P3677\" qty=\"3\"/>"
+ "<line-item pid=\"P9877\" qty=\"10\"/>"
+ "</line-items>"
+ "</order>";

System.out.println(xml);
assertEquals(expected, xml);
}

}
Loading