From 77d3fdd9574adfe6119e24338937986b1f6d354c Mon Sep 17 00:00:00 2001 From: Thomas Young Date: Wed, 26 Jul 2017 00:17:14 +0800 Subject: [PATCH 01/13] =?UTF-8?q?[feature]=20=E5=AE=9E=E7=8E=B0=E7=BB=84?= =?UTF-8?q?=E5=90=88(Composite)=E6=A8=A1=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mydp/composite/CompositeTest.java | 26 +++++++++++++++++++ .../com/coderising/mydp/composite/Line.java | 3 +-- .../coderising/mydp/composite/Picture.java | 23 ++++++++++++++++ .../coderising/mydp/composite/Rectangle.java | 2 +- .../com/coderising/mydp/composite/Shape.java | 2 +- .../com/coderising/mydp/composite/Square.java | 2 +- .../com/coderising/mydp/composite/Text.java | 2 +- 7 files changed, 54 insertions(+), 6 deletions(-) create mode 100644 students/812350401/src/main/java/com/coderising/mydp/composite/CompositeTest.java create mode 100644 students/812350401/src/main/java/com/coderising/mydp/composite/Picture.java diff --git a/students/812350401/src/main/java/com/coderising/mydp/composite/CompositeTest.java b/students/812350401/src/main/java/com/coderising/mydp/composite/CompositeTest.java new file mode 100644 index 0000000000..1a93f9e60b --- /dev/null +++ b/students/812350401/src/main/java/com/coderising/mydp/composite/CompositeTest.java @@ -0,0 +1,26 @@ +package com.coderising.mydp.composite; + +import org.junit.Test; + +/** + * Created by thomas_young on 25/7/2017. + */ +public class CompositeTest { + + @Test + public void testComposite() { + Picture aPicture = new Picture(); + aPicture.add(new Line()); + aPicture.add(new Rectangle()); + + Picture p = new Picture(); + p.add(new Text()); + p.add(new Line()); + p.add(new Square()); + + aPicture.add(p); + aPicture.add(new Picture()); + aPicture.add(new Line()); + aPicture.draw(); + } +} diff --git a/students/812350401/src/main/java/com/coderising/mydp/composite/Line.java b/students/812350401/src/main/java/com/coderising/mydp/composite/Line.java index 2be4e6406c..2c469cadc4 100644 --- a/students/812350401/src/main/java/com/coderising/mydp/composite/Line.java +++ b/students/812350401/src/main/java/com/coderising/mydp/composite/Line.java @@ -4,8 +4,7 @@ public class Line implements Shape { @Override public void draw() { - - + System.out.println("Line"); } } diff --git a/students/812350401/src/main/java/com/coderising/mydp/composite/Picture.java b/students/812350401/src/main/java/com/coderising/mydp/composite/Picture.java new file mode 100644 index 0000000000..79a434679f --- /dev/null +++ b/students/812350401/src/main/java/com/coderising/mydp/composite/Picture.java @@ -0,0 +1,23 @@ +package com.coderising.mydp.composite; + +import java.util.LinkedList; +import java.util.List; + +/** + * Created by thomas_young on 26/7/2017. + */ +public class Picture implements Shape { + private List shapes = new LinkedList<>(); + + @Override + public void draw() { + System.out.println("Picture"); + for (Shape shape: shapes) { + shape.draw(); + } + } + public void add(Shape shape) { + shapes.add(shape); + } + +} diff --git a/students/812350401/src/main/java/com/coderising/mydp/composite/Rectangle.java b/students/812350401/src/main/java/com/coderising/mydp/composite/Rectangle.java index ae90deb805..3b068664e7 100644 --- a/students/812350401/src/main/java/com/coderising/mydp/composite/Rectangle.java +++ b/students/812350401/src/main/java/com/coderising/mydp/composite/Rectangle.java @@ -5,7 +5,7 @@ public class Rectangle implements Shape { @Override public void draw() { // TODO Auto-generated method stub - + System.out.println("Rectangle"); } } diff --git a/students/812350401/src/main/java/com/coderising/mydp/composite/Shape.java b/students/812350401/src/main/java/com/coderising/mydp/composite/Shape.java index 20e1e0b6d2..2ab46ef491 100644 --- a/students/812350401/src/main/java/com/coderising/mydp/composite/Shape.java +++ b/students/812350401/src/main/java/com/coderising/mydp/composite/Shape.java @@ -1,5 +1,5 @@ package com.coderising.mydp.composite; public interface Shape { - public void draw(); + void draw(); } diff --git a/students/812350401/src/main/java/com/coderising/mydp/composite/Square.java b/students/812350401/src/main/java/com/coderising/mydp/composite/Square.java index 68df86555f..2df037fb8f 100644 --- a/students/812350401/src/main/java/com/coderising/mydp/composite/Square.java +++ b/students/812350401/src/main/java/com/coderising/mydp/composite/Square.java @@ -5,7 +5,7 @@ public class Square implements Shape { @Override public void draw() { // TODO Auto-generated method stub - + System.out.println("Square"); } } diff --git a/students/812350401/src/main/java/com/coderising/mydp/composite/Text.java b/students/812350401/src/main/java/com/coderising/mydp/composite/Text.java index 22927e7789..1e6e9c7e9f 100644 --- a/students/812350401/src/main/java/com/coderising/mydp/composite/Text.java +++ b/students/812350401/src/main/java/com/coderising/mydp/composite/Text.java @@ -5,7 +5,7 @@ public class Text implements Shape { @Override public void draw() { // TODO Auto-generated method stub - + System.out.println("Text"); } } From d1a785b12301feb09babca3e6e72b79513bd94c1 Mon Sep 17 00:00:00 2001 From: jy <977996067@qq.com> Date: Thu, 27 Jul 2017 23:27:49 +0800 Subject: [PATCH 02/13] Add Decorator&Composition&Bridge pattern homework --- .../coderising/dp/week2/bridge/Circle.java | 15 ++++++ .../dp/week2/bridge/DrawClient.java | 9 ++++ .../coderising/dp/week2/bridge/Drawing.java | 8 +++ .../dp/week2/bridge/DrawingGL1.java | 14 +++++ .../dp/week2/bridge/DrawingGL2.java | 14 +++++ .../coderising/dp/week2/bridge/Rectangle.java | 15 ++++++ .../com/coderising/dp/week2/bridge/Shape.java | 16 ++++++ .../coderising/dp/week2/composition/Line.java | 9 ++++ .../dp/week2/composition/Picture.java | 18 +++++++ .../dp/week2/composition/Rectangle.java | 9 ++++ .../dp/week2/composition/Shape.java | 6 +++ .../dp/week2/composition/ShapeClient.java | 17 +++++++ .../dp/week2/composition/Square.java | 9 ++++ .../coderising/dp/week2/composition/Text.java | 9 ++++ .../coderising/dp/week2/decorator/Email.java | 6 +++ .../dp/week2/decorator/EmailDecorator.java | 51 +++++++++++++++++++ .../dp/week2/decorator/EmailImpl.java | 15 ++++++ .../dp/week2/decorator/EmailType.java | 6 +++ 18 files changed, 246 insertions(+) create mode 100644 students/977996067/src/main/java/com/coderising/dp/week2/bridge/Circle.java create mode 100644 students/977996067/src/main/java/com/coderising/dp/week2/bridge/DrawClient.java create mode 100644 students/977996067/src/main/java/com/coderising/dp/week2/bridge/Drawing.java create mode 100644 students/977996067/src/main/java/com/coderising/dp/week2/bridge/DrawingGL1.java create mode 100644 students/977996067/src/main/java/com/coderising/dp/week2/bridge/DrawingGL2.java create mode 100644 students/977996067/src/main/java/com/coderising/dp/week2/bridge/Rectangle.java create mode 100644 students/977996067/src/main/java/com/coderising/dp/week2/bridge/Shape.java create mode 100644 students/977996067/src/main/java/com/coderising/dp/week2/composition/Line.java create mode 100644 students/977996067/src/main/java/com/coderising/dp/week2/composition/Picture.java create mode 100644 students/977996067/src/main/java/com/coderising/dp/week2/composition/Rectangle.java create mode 100644 students/977996067/src/main/java/com/coderising/dp/week2/composition/Shape.java create mode 100644 students/977996067/src/main/java/com/coderising/dp/week2/composition/ShapeClient.java create mode 100644 students/977996067/src/main/java/com/coderising/dp/week2/composition/Square.java create mode 100644 students/977996067/src/main/java/com/coderising/dp/week2/composition/Text.java create mode 100644 students/977996067/src/main/java/com/coderising/dp/week2/decorator/Email.java create mode 100644 students/977996067/src/main/java/com/coderising/dp/week2/decorator/EmailDecorator.java create mode 100644 students/977996067/src/main/java/com/coderising/dp/week2/decorator/EmailImpl.java create mode 100644 students/977996067/src/main/java/com/coderising/dp/week2/decorator/EmailType.java diff --git a/students/977996067/src/main/java/com/coderising/dp/week2/bridge/Circle.java b/students/977996067/src/main/java/com/coderising/dp/week2/bridge/Circle.java new file mode 100644 index 0000000000..c90c1b3889 --- /dev/null +++ b/students/977996067/src/main/java/com/coderising/dp/week2/bridge/Circle.java @@ -0,0 +1,15 @@ +package com.coderising.dp.week2.bridge; + +public class Circle extends Shape { + + public Circle(Drawing drawing) { + super(drawing); + } + + @Override + public void draw() { + getDrawing().drawLine(); + getDrawing().drawCircle(); + System.out.println("I am drawing a circle ..."); + } +} diff --git a/students/977996067/src/main/java/com/coderising/dp/week2/bridge/DrawClient.java b/students/977996067/src/main/java/com/coderising/dp/week2/bridge/DrawClient.java new file mode 100644 index 0000000000..c59cd73066 --- /dev/null +++ b/students/977996067/src/main/java/com/coderising/dp/week2/bridge/DrawClient.java @@ -0,0 +1,9 @@ +package com.coderising.dp.week2.bridge; + +public class DrawClient { + + public static void main(String[] args) { + Drawing drawing = new DrawingGL1(); + new Rectangle(drawing).draw(); + } +} diff --git a/students/977996067/src/main/java/com/coderising/dp/week2/bridge/Drawing.java b/students/977996067/src/main/java/com/coderising/dp/week2/bridge/Drawing.java new file mode 100644 index 0000000000..afa394c29f --- /dev/null +++ b/students/977996067/src/main/java/com/coderising/dp/week2/bridge/Drawing.java @@ -0,0 +1,8 @@ +package com.coderising.dp.week2.bridge; + +public interface Drawing { + + void drawLine(); + + void drawCircle(); +} diff --git a/students/977996067/src/main/java/com/coderising/dp/week2/bridge/DrawingGL1.java b/students/977996067/src/main/java/com/coderising/dp/week2/bridge/DrawingGL1.java new file mode 100644 index 0000000000..1b3f6c09c4 --- /dev/null +++ b/students/977996067/src/main/java/com/coderising/dp/week2/bridge/DrawingGL1.java @@ -0,0 +1,14 @@ +package com.coderising.dp.week2.bridge; + +public class DrawingGL1 implements Drawing { + + @Override + public void drawLine() { + System.out.println("I am drawing line 1 ..."); + } + + @Override + public void drawCircle() { + System.out.println("I am drawing circle 1 ..."); + } +} diff --git a/students/977996067/src/main/java/com/coderising/dp/week2/bridge/DrawingGL2.java b/students/977996067/src/main/java/com/coderising/dp/week2/bridge/DrawingGL2.java new file mode 100644 index 0000000000..23031c0122 --- /dev/null +++ b/students/977996067/src/main/java/com/coderising/dp/week2/bridge/DrawingGL2.java @@ -0,0 +1,14 @@ +package com.coderising.dp.week2.bridge; + +public class DrawingGL2 implements Drawing { + + @Override + public void drawLine() { + System.out.println("I am drawing line 2 ..."); + } + + @Override + public void drawCircle() { + System.out.println("I am drawing circle 2 ..."); + } +} diff --git a/students/977996067/src/main/java/com/coderising/dp/week2/bridge/Rectangle.java b/students/977996067/src/main/java/com/coderising/dp/week2/bridge/Rectangle.java new file mode 100644 index 0000000000..9ebfaa12d5 --- /dev/null +++ b/students/977996067/src/main/java/com/coderising/dp/week2/bridge/Rectangle.java @@ -0,0 +1,15 @@ +package com.coderising.dp.week2.bridge; + +public class Rectangle extends Shape { + + public Rectangle(Drawing drawing) { + super(drawing); + } + + @Override + public void draw() { + getDrawing().drawLine(); + getDrawing().drawCircle(); + System.out.println("I am drawing a rectangle ..."); + } +} diff --git a/students/977996067/src/main/java/com/coderising/dp/week2/bridge/Shape.java b/students/977996067/src/main/java/com/coderising/dp/week2/bridge/Shape.java new file mode 100644 index 0000000000..28d2d90430 --- /dev/null +++ b/students/977996067/src/main/java/com/coderising/dp/week2/bridge/Shape.java @@ -0,0 +1,16 @@ +package com.coderising.dp.week2.bridge; + +public abstract class Shape { + + private Drawing drawing; + + public Shape(Drawing drawing) { + this.drawing = drawing; + } + + public Drawing getDrawing() { + return drawing; + } + + protected abstract void draw(); +} diff --git a/students/977996067/src/main/java/com/coderising/dp/week2/composition/Line.java b/students/977996067/src/main/java/com/coderising/dp/week2/composition/Line.java new file mode 100644 index 0000000000..d0d15396fa --- /dev/null +++ b/students/977996067/src/main/java/com/coderising/dp/week2/composition/Line.java @@ -0,0 +1,9 @@ +package com.coderising.dp.week2.composition; + +public class Line implements Shape { + + @Override + public void draw() { + System.out.println("I am drawing a line ..."); + } +} diff --git a/students/977996067/src/main/java/com/coderising/dp/week2/composition/Picture.java b/students/977996067/src/main/java/com/coderising/dp/week2/composition/Picture.java new file mode 100644 index 0000000000..8dd13fc673 --- /dev/null +++ b/students/977996067/src/main/java/com/coderising/dp/week2/composition/Picture.java @@ -0,0 +1,18 @@ +package com.coderising.dp.week2.composition; + +import java.util.List; +import java.util.concurrent.CopyOnWriteArrayList; + +public class Picture implements Shape { + + private List shapes = new CopyOnWriteArrayList<>(); + + @Override + public void draw() { + shapes.forEach(Shape::draw); + } + + public void addShape(Shape shape) { + shapes.add(shape); + } +} diff --git a/students/977996067/src/main/java/com/coderising/dp/week2/composition/Rectangle.java b/students/977996067/src/main/java/com/coderising/dp/week2/composition/Rectangle.java new file mode 100644 index 0000000000..00fb136dcb --- /dev/null +++ b/students/977996067/src/main/java/com/coderising/dp/week2/composition/Rectangle.java @@ -0,0 +1,9 @@ +package com.coderising.dp.week2.composition; + +public class Rectangle implements Shape { + + @Override + public void draw() { + System.out.println("I am drawing a rectangle ..."); + } +} diff --git a/students/977996067/src/main/java/com/coderising/dp/week2/composition/Shape.java b/students/977996067/src/main/java/com/coderising/dp/week2/composition/Shape.java new file mode 100644 index 0000000000..5ccbf9fa9c --- /dev/null +++ b/students/977996067/src/main/java/com/coderising/dp/week2/composition/Shape.java @@ -0,0 +1,6 @@ +package com.coderising.dp.week2.composition; + +public interface Shape { + + void draw(); +} diff --git a/students/977996067/src/main/java/com/coderising/dp/week2/composition/ShapeClient.java b/students/977996067/src/main/java/com/coderising/dp/week2/composition/ShapeClient.java new file mode 100644 index 0000000000..e8a0c2e7f3 --- /dev/null +++ b/students/977996067/src/main/java/com/coderising/dp/week2/composition/ShapeClient.java @@ -0,0 +1,17 @@ +package com.coderising.dp.week2.composition; + +public class ShapeClient { + + public static void main(String[] args) { + Picture subPicture = new Picture(); + Line line = new Line(); + subPicture.addShape(new Text()); + subPicture.addShape(line); + subPicture.addShape(new Square()); + Picture parentPicture = new Picture(); + parentPicture.addShape(subPicture); + parentPicture.addShape(line); + parentPicture.addShape(new Rectangle()); + parentPicture.draw(); + } +} diff --git a/students/977996067/src/main/java/com/coderising/dp/week2/composition/Square.java b/students/977996067/src/main/java/com/coderising/dp/week2/composition/Square.java new file mode 100644 index 0000000000..7d21e6ead1 --- /dev/null +++ b/students/977996067/src/main/java/com/coderising/dp/week2/composition/Square.java @@ -0,0 +1,9 @@ +package com.coderising.dp.week2.composition; + +public class Square implements Shape { + + @Override + public void draw() { + System.out.println("I am drawing a square ..."); + } +} diff --git a/students/977996067/src/main/java/com/coderising/dp/week2/composition/Text.java b/students/977996067/src/main/java/com/coderising/dp/week2/composition/Text.java new file mode 100644 index 0000000000..7c255262f6 --- /dev/null +++ b/students/977996067/src/main/java/com/coderising/dp/week2/composition/Text.java @@ -0,0 +1,9 @@ +package com.coderising.dp.week2.composition; + +public class Text implements Shape { + + @Override + public void draw() { + System.out.println("I am drawing a text..."); + } +} diff --git a/students/977996067/src/main/java/com/coderising/dp/week2/decorator/Email.java b/students/977996067/src/main/java/com/coderising/dp/week2/decorator/Email.java new file mode 100644 index 0000000000..f530f207ea --- /dev/null +++ b/students/977996067/src/main/java/com/coderising/dp/week2/decorator/Email.java @@ -0,0 +1,6 @@ +package com.coderising.dp.week2.decorator; + +public interface Email { + + String getContent(); +} diff --git a/students/977996067/src/main/java/com/coderising/dp/week2/decorator/EmailDecorator.java b/students/977996067/src/main/java/com/coderising/dp/week2/decorator/EmailDecorator.java new file mode 100644 index 0000000000..8faae4222d --- /dev/null +++ b/students/977996067/src/main/java/com/coderising/dp/week2/decorator/EmailDecorator.java @@ -0,0 +1,51 @@ +package com.coderising.dp.week2.decorator; + +import java.nio.charset.Charset; +import java.util.Base64; + +public class EmailDecorator implements Email { + + private Email email; + + private String rawContent; + + private String handledContent; + + private EmailType emailType; + + public EmailDecorator(Email email) { + this(email, EmailType.PRIVATE); + } + + public EmailDecorator(Email email, EmailType emailType) { + this.email = email; + handle(email.getContent(), emailType); + } + + @Override + public String getContent() { + if (isModified()) { + handle(this.email.getContent(), this.emailType); + } + return this.handledContent; + } + + private void handle(String rawString, EmailType emailType) { + this.rawContent = rawString; + this.emailType = emailType; + String decodeString = decode(rawString); + this.handledContent = emailType == EmailType.PRIVATE ? decodeString : (decodeString + "本邮件仅为个人观点,并不代表公司立场"); + + } + + private String decode(String rawString) { + return new String(Base64.getEncoder().encode(rawString.getBytes()), Charset.defaultCharset()); + } + + private boolean isModified() { + if (this.rawContent == null) { + throw new RuntimeException(); + } + return email != null && rawContent.equals(email.getContent()); + } +} diff --git a/students/977996067/src/main/java/com/coderising/dp/week2/decorator/EmailImpl.java b/students/977996067/src/main/java/com/coderising/dp/week2/decorator/EmailImpl.java new file mode 100644 index 0000000000..fd1a0eb48b --- /dev/null +++ b/students/977996067/src/main/java/com/coderising/dp/week2/decorator/EmailImpl.java @@ -0,0 +1,15 @@ +package com.coderising.dp.week2.decorator; + +public class EmailImpl implements Email { + + private String content; + + public EmailImpl(String content) { + this.content = content; + } + + @Override + public String getContent() { + return this.content; + } +} diff --git a/students/977996067/src/main/java/com/coderising/dp/week2/decorator/EmailType.java b/students/977996067/src/main/java/com/coderising/dp/week2/decorator/EmailType.java new file mode 100644 index 0000000000..97ed1febea --- /dev/null +++ b/students/977996067/src/main/java/com/coderising/dp/week2/decorator/EmailType.java @@ -0,0 +1,6 @@ +package com.coderising.dp.week2.decorator; + +public enum EmailType { + PRIVATE, + PUBLIC +} From ef5a65856f94d9adba5ae5bc189fe7b9dcb6c5ea Mon Sep 17 00:00:00 2001 From: Liu Zengzeng Date: Fri, 28 Jul 2017 10:12:43 +0800 Subject: [PATCH 03/13] dp homework compoiste bridge and decorator --- .../java/com/coderings/dp/bridge/Circle.java | 35 ++++++++++++++++ .../com/coderings/dp/bridge/ClientMain.java | 19 +++++++++ .../coderings/dp/bridge/GraphicLibrary.java | 11 +++++ .../coderings/dp/bridge/GraphicLibrary1.java | 24 +++++++++++ .../coderings/dp/bridge/GraphicLibrary2.java | 23 +++++++++++ .../java/com/coderings/dp/bridge/Line.java | 40 +++++++++++++++++++ .../java/com/coderings/dp/bridge/Shape.java | 5 +++ .../coderings/dp/composite/ClientMain.java | 16 ++++++++ .../coderings/dp/composite/ComponetShape.java | 9 +++++ .../dp/composite/CompositeShape.java | 26 ++++++++++++ .../java/com/coderings/dp/composite/Line.java | 10 +++++ .../com/coderings/dp/composite/Rectangle.java | 11 +++++ .../com/coderings/dp/composite/Shape.java | 5 +++ .../com/coderings/dp/composite/Square.java | 11 +++++ .../java/com/coderings/dp/composite/Text.java | 11 +++++ .../com/coderings/dp/decorator/Email.java | 6 +++ .../dp/decorator/EmailDecorator.java | 13 ++++++ .../com/coderings/dp/decorator/EmailImpl.java | 12 ++++++ .../com/coderings/dp/decorator/EmailMain.java | 15 +++++++ .../dp/decorator/EncryptEmailImpl.java | 20 ++++++++++ .../dp/decorator/StatementEmailImpl.java | 17 ++++++++ 21 files changed, 339 insertions(+) create mode 100644 students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/bridge/Circle.java create mode 100644 students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/bridge/ClientMain.java create mode 100644 students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/bridge/GraphicLibrary.java create mode 100644 students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/bridge/GraphicLibrary1.java create mode 100644 students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/bridge/GraphicLibrary2.java create mode 100644 students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/bridge/Line.java create mode 100644 students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/bridge/Shape.java create mode 100644 students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/composite/ClientMain.java create mode 100644 students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/composite/ComponetShape.java create mode 100644 students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/composite/CompositeShape.java create mode 100644 students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/composite/Line.java create mode 100644 students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/composite/Rectangle.java create mode 100644 students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/composite/Shape.java create mode 100644 students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/composite/Square.java create mode 100644 students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/composite/Text.java create mode 100644 students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/decorator/Email.java create mode 100644 students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/decorator/EmailDecorator.java create mode 100644 students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/decorator/EmailImpl.java create mode 100644 students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/decorator/EmailMain.java create mode 100644 students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/decorator/EncryptEmailImpl.java create mode 100644 students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/decorator/StatementEmailImpl.java diff --git a/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/bridge/Circle.java b/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/bridge/Circle.java new file mode 100644 index 0000000000..f0395794a4 --- /dev/null +++ b/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/bridge/Circle.java @@ -0,0 +1,35 @@ +package com.coderings.dp.bridge; + +public class Circle implements Shape { + + int x; + int y; + int r; + + private GraphicLibrary graphicLibrary; + + public Circle(int x, int y, int r, GraphicLibrary graphicLibrary) { + this.x = x; + this.y = y; + this.r = r; + this.graphicLibrary = graphicLibrary; + } + + public int getX() { + return x; + } + + public int getY() { + return y; + } + + public int getR() { + return r; + } + + @Override + public void draw() { + graphicLibrary.drawCircle(this); + } + +} diff --git a/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/bridge/ClientMain.java b/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/bridge/ClientMain.java new file mode 100644 index 0000000000..0414dd6df9 --- /dev/null +++ b/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/bridge/ClientMain.java @@ -0,0 +1,19 @@ +package com.coderings.dp.bridge; + +/** + * @author nvarchar + * date 2017/7/28 + */ +public class ClientMain { + public static void main(String[] args) { + Shape line = new Line(1,2,1,2,new GraphicLibrary1()); + Shape line2 = new Line(1,2,1,2,new GraphicLibrary2()); + Shape circle = new Circle(1,2,2,new GraphicLibrary1()); + Shape circle2 = new Circle(1,2,1,new GraphicLibrary2()); + + line.draw(); + line2.draw(); + circle.draw(); + circle2.draw(); + } +} diff --git a/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/bridge/GraphicLibrary.java b/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/bridge/GraphicLibrary.java new file mode 100644 index 0000000000..d9fcb6ae5a --- /dev/null +++ b/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/bridge/GraphicLibrary.java @@ -0,0 +1,11 @@ +package com.coderings.dp.bridge; + +/** + * @author nvarchar + * date 2017/7/28 + */ +public interface GraphicLibrary { + void drawLine(Shape shape); + + void drawCircle(Shape shape); +} diff --git a/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/bridge/GraphicLibrary1.java b/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/bridge/GraphicLibrary1.java new file mode 100644 index 0000000000..31776b21d8 --- /dev/null +++ b/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/bridge/GraphicLibrary1.java @@ -0,0 +1,24 @@ +package com.coderings.dp.bridge; + +public class GraphicLibrary1 implements GraphicLibrary{ + + @Override + public void drawLine(Shape shape) { + Line line = (Line)shape; + draw_a_line(line.getX1(), line.getY1(), line.getX2(), line.getY2()); + } + + @Override + public void drawCircle(Shape shape) { + Circle circle = (Circle)shape; + draw_a_circle(circle.getX(), circle.getY(), circle.getY()); + } + + public void draw_a_line(int x1, int y1, int x2, int y2){ + System.out.println("graphic1 draw a line..."); + } + public void draw_a_circle(int x,int y, int r){ + System.out.println("graphic1 draw a circle..."); + } + +} diff --git a/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/bridge/GraphicLibrary2.java b/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/bridge/GraphicLibrary2.java new file mode 100644 index 0000000000..ee9d7e8685 --- /dev/null +++ b/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/bridge/GraphicLibrary2.java @@ -0,0 +1,23 @@ +package com.coderings.dp.bridge; + +public class GraphicLibrary2 implements GraphicLibrary{ + @Override + public void drawLine(Shape shape) { + Line line = (Line)shape; + drawLine(line.getX1(), line.getX2(), line.getY1(), line.getY2()); + } + + @Override + public void drawCircle(Shape shape) { + Circle circle = (Circle)shape; + drawCircle(circle.getX(), circle.getY(), circle.getY()); + } + + public void drawLine(int x1, int x2, int y1, int y2){ + System.out.println("graphic2 draw a line..."); + } + public void drawCircle(int x,int y, int r){ + System.out.println("graphic2 draw a circle..."); + } + +} diff --git a/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/bridge/Line.java b/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/bridge/Line.java new file mode 100644 index 0000000000..3d0b7a9077 --- /dev/null +++ b/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/bridge/Line.java @@ -0,0 +1,40 @@ +package com.coderings.dp.bridge; + +public class Line implements Shape { + private int x1; + private int y1; + private int x2; + private int y2; + + private GraphicLibrary graphicLibrary; + + public Line(int x1, int y1, int x2, int y2, GraphicLibrary graphicLibrary) { + this.x1 = x1; + this.y1 = y1; + this.x2 = x2; + this.y2 = y2; + this.graphicLibrary = graphicLibrary; + } + + public int getX1() { + return x1; + } + + public int getY1() { + return y1; + } + + public int getX2() { + return x2; + } + + public int getY2() { + return y2; + } + + @Override + public void draw() { + graphicLibrary.drawLine(this); + } + +} diff --git a/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/bridge/Shape.java b/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/bridge/Shape.java new file mode 100644 index 0000000000..658219a872 --- /dev/null +++ b/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/bridge/Shape.java @@ -0,0 +1,5 @@ +package com.coderings.dp.bridge; + +public interface Shape { + public void draw(); +} diff --git a/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/composite/ClientMain.java b/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/composite/ClientMain.java new file mode 100644 index 0000000000..62b6c44a11 --- /dev/null +++ b/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/composite/ClientMain.java @@ -0,0 +1,16 @@ +package com.coderings.dp.composite; + +/** + * @author nvarchar + * date 2017/7/28 + */ +public class ClientMain { + public static void main(String[] args) { + CompositeShape compositeShape = new CompositeShape(); + compositeShape.add(new Line()); + compositeShape.add(new Square()); + compositeShape.add(new Rectangle()); + compositeShape.add(new Text()); + compositeShape.draw(); + } +} diff --git a/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/composite/ComponetShape.java b/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/composite/ComponetShape.java new file mode 100644 index 0000000000..9992c45c2d --- /dev/null +++ b/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/composite/ComponetShape.java @@ -0,0 +1,9 @@ +package com.coderings.dp.composite; + +/** + * @author nvarchar + * date 2017/7/28 + */ +public abstract class ComponetShape implements Shape { + public abstract void add(Shape shape); +} diff --git a/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/composite/CompositeShape.java b/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/composite/CompositeShape.java new file mode 100644 index 0000000000..2fe2e164e0 --- /dev/null +++ b/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/composite/CompositeShape.java @@ -0,0 +1,26 @@ +package com.coderings.dp.composite; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author nvarchar + * date 2017/7/28 + */ +public class CompositeShape extends ComponetShape{ + + private List shapes = new ArrayList<>(); + + @Override + public void draw() { + for(Shape shape : shapes){ + shape.draw(); + } + } + + @Override + public void add(Shape shape) { + shapes.add(shape); + } + +} diff --git a/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/composite/Line.java b/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/composite/Line.java new file mode 100644 index 0000000000..cc1f6c858a --- /dev/null +++ b/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/composite/Line.java @@ -0,0 +1,10 @@ +package com.coderings.dp.composite; + +public class Line implements Shape { + + @Override + public void draw() { + System.out.println("draw line"); + } + +} diff --git a/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/composite/Rectangle.java b/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/composite/Rectangle.java new file mode 100644 index 0000000000..95a91e522a --- /dev/null +++ b/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/composite/Rectangle.java @@ -0,0 +1,11 @@ +package com.coderings.dp.composite; + +public class Rectangle implements Shape { + + @Override + public void draw() { + // TODO Auto-generated method stub + System.out.println("draw rectangle"); + } + +} diff --git a/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/composite/Shape.java b/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/composite/Shape.java new file mode 100644 index 0000000000..ea353dad66 --- /dev/null +++ b/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/composite/Shape.java @@ -0,0 +1,5 @@ +package com.coderings.dp.composite; + +public interface Shape { + public void draw(); +} diff --git a/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/composite/Square.java b/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/composite/Square.java new file mode 100644 index 0000000000..2f6b44bdad --- /dev/null +++ b/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/composite/Square.java @@ -0,0 +1,11 @@ +package com.coderings.dp.composite; + +public class Square implements Shape { + + @Override + public void draw() { + // TODO Auto-generated method stub + System.out.println("draw square"); + } + +} diff --git a/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/composite/Text.java b/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/composite/Text.java new file mode 100644 index 0000000000..e44cb39591 --- /dev/null +++ b/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/composite/Text.java @@ -0,0 +1,11 @@ +package com.coderings.dp.composite; + +public class Text implements Shape { + + @Override + public void draw() { + // TODO Auto-generated method stub + System.out.println("draw text"); + } + +} diff --git a/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/decorator/Email.java b/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/decorator/Email.java new file mode 100644 index 0000000000..f06ce0174f --- /dev/null +++ b/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/decorator/Email.java @@ -0,0 +1,6 @@ +package com.coderings.dp.decorator; + +public interface Email { + public String getContent(); +} + diff --git a/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/decorator/EmailDecorator.java b/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/decorator/EmailDecorator.java new file mode 100644 index 0000000000..acb9cb5ec5 --- /dev/null +++ b/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/decorator/EmailDecorator.java @@ -0,0 +1,13 @@ +package com.coderings.dp.decorator; + +public abstract class EmailDecorator implements Email{ + protected Email email; + + public EmailDecorator(Email email) { + this.email = email; + } + + public String getContent() { + return email.getContent(); + } +} \ No newline at end of file diff --git a/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/decorator/EmailImpl.java b/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/decorator/EmailImpl.java new file mode 100644 index 0000000000..2d0abae365 --- /dev/null +++ b/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/decorator/EmailImpl.java @@ -0,0 +1,12 @@ +package com.coderings.dp.decorator; + +public class EmailImpl implements Email { + private String content; + + public EmailImpl(String content) { + this.content = content; + } + public String getContent() { + return content; + } +} diff --git a/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/decorator/EmailMain.java b/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/decorator/EmailMain.java new file mode 100644 index 0000000000..e2822ab9de --- /dev/null +++ b/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/decorator/EmailMain.java @@ -0,0 +1,15 @@ +package com.coderings.dp.decorator; + +/** + * @author nvarchar + * date 2017/7/28 + */ +public class EmailMain { + public static void main(String[] args) { + Email stateEmail = new StatementEmailImpl(new EmailImpl("发邮件")); + Email encryptEmail = new EncryptEmailImpl(new EmailImpl("发邮件")); + + System.out.println(stateEmail.getContent()); + System.out.println(encryptEmail.getContent()); + } +} diff --git a/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/decorator/EncryptEmailImpl.java b/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/decorator/EncryptEmailImpl.java new file mode 100644 index 0000000000..5a63aa84cf --- /dev/null +++ b/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/decorator/EncryptEmailImpl.java @@ -0,0 +1,20 @@ +package com.coderings.dp.decorator; + +/** + * @author nvarchar + * date 2017/7/26 + */ +public class EncryptEmailImpl extends EmailDecorator { + + public EncryptEmailImpl(Email email) { + super(email); + } + + private String encrypt(String content) { + return "****" + content + "****"; + } + + public String getContent() { + return encrypt(email.getContent()); + } +} diff --git a/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/decorator/StatementEmailImpl.java b/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/decorator/StatementEmailImpl.java new file mode 100644 index 0000000000..a71b0dd7ac --- /dev/null +++ b/students/2816977791/ood/ood-assignment/src/main/java/com/coderings/dp/decorator/StatementEmailImpl.java @@ -0,0 +1,17 @@ +package com.coderings.dp.decorator; + +/** + * @author nvarchar + * date 2017/7/26 + */ +public class StatementEmailImpl extends EmailDecorator { + + public StatementEmailImpl(Email email) { + super(email); + } + + public String getContent(){ + String state = "本邮件仅代表个人立场,不代表公司立场;"; + return email.getContent() + state; + } +} From f6062be9d17b45778a298f5efe4f53dda9bf8697 Mon Sep 17 00:00:00 2001 From: yangzhm Date: Fri, 28 Jul 2017 10:14:23 +0800 Subject: [PATCH 04/13] add homework of bridgepattern,compositepattern and decoratorpattern --- .../OOD/bridgepattern/DrawCircle.java | 15 +++++++++++++ .../495232796/OOD/bridgepattern/DrawLine.java | 16 ++++++++++++++ .../495232796/OOD/bridgepattern/Drawing.java | 6 +++++ .../OOD/bridgepattern/GraphicLibrary1.java | 10 +++++++++ .../bridgepattern/GraphicLibrary1Adapter.java | 15 +++++++++++++ .../OOD/bridgepattern/GraphicLibrary2.java | 10 +++++++++ .../495232796/OOD/bridgepattern/Shape.java | 10 +++++++++ .../495232796/OOD/compositepattern/Line.java | 10 +++++++++ .../OOD/compositepattern/Picture.java | 19 ++++++++++++++++ .../OOD/compositepattern/Rectangle.java | 10 +++++++++ .../495232796/OOD/compositepattern/Shape.java | 5 +++++ .../OOD/compositepattern/Square.java | 10 +++++++++ .../495232796/OOD/compositepattern/Text.java | 10 +++++++++ .../495232796/OOD/decoratorpattern/Email.java | 6 +++++ .../OOD/decoratorpattern/EmailDecorator.java | 13 +++++++++++ .../EmailEncryptionDecorator.java | 20 +++++++++++++++++ .../OOD/decoratorpattern/EmailImpl.java | 12 ++++++++++ .../EmailStatementDecorator.java | 22 +++++++++++++++++++ 18 files changed, 219 insertions(+) create mode 100644 students/495232796/OOD/bridgepattern/DrawCircle.java create mode 100644 students/495232796/OOD/bridgepattern/DrawLine.java create mode 100644 students/495232796/OOD/bridgepattern/Drawing.java create mode 100644 students/495232796/OOD/bridgepattern/GraphicLibrary1.java create mode 100644 students/495232796/OOD/bridgepattern/GraphicLibrary1Adapter.java create mode 100644 students/495232796/OOD/bridgepattern/GraphicLibrary2.java create mode 100644 students/495232796/OOD/bridgepattern/Shape.java create mode 100644 students/495232796/OOD/compositepattern/Line.java create mode 100644 students/495232796/OOD/compositepattern/Picture.java create mode 100644 students/495232796/OOD/compositepattern/Rectangle.java create mode 100644 students/495232796/OOD/compositepattern/Shape.java create mode 100644 students/495232796/OOD/compositepattern/Square.java create mode 100644 students/495232796/OOD/compositepattern/Text.java create mode 100644 students/495232796/OOD/decoratorpattern/Email.java create mode 100644 students/495232796/OOD/decoratorpattern/EmailDecorator.java create mode 100644 students/495232796/OOD/decoratorpattern/EmailEncryptionDecorator.java create mode 100644 students/495232796/OOD/decoratorpattern/EmailImpl.java create mode 100644 students/495232796/OOD/decoratorpattern/EmailStatementDecorator.java diff --git a/students/495232796/OOD/bridgepattern/DrawCircle.java b/students/495232796/OOD/bridgepattern/DrawCircle.java new file mode 100644 index 0000000000..a9d515fbb4 --- /dev/null +++ b/students/495232796/OOD/bridgepattern/DrawCircle.java @@ -0,0 +1,15 @@ +package com.coderising.dp.bridge; + +public class DrawCircle extends Shape{ + public int x, y, r; + + public DrawCircle(Drawing drawing, int x, int y, int r) { + super(drawing); + this.x =x; + this.y = y; + this.r = r; + } + public void draw() { + this.drawing.drawCircle(x, y, r); + } +} diff --git a/students/495232796/OOD/bridgepattern/DrawLine.java b/students/495232796/OOD/bridgepattern/DrawLine.java new file mode 100644 index 0000000000..df0271d16b --- /dev/null +++ b/students/495232796/OOD/bridgepattern/DrawLine.java @@ -0,0 +1,16 @@ +package com.coderising.dp.bridge; + +public class DrawLine extends Shape{ + int x1, y1, x2, y2; + + public DrawLine(Drawing drawing, int x1, int y1, int x2, int y2) { + super(drawing); + this.x1 = x1; + this.x2 = x2; + this.y1 = y1; + this.y2 = y2; + } + public void draw() { + this.drawing.drawLine(x1, y1, x2, y2); + } +} diff --git a/students/495232796/OOD/bridgepattern/Drawing.java b/students/495232796/OOD/bridgepattern/Drawing.java new file mode 100644 index 0000000000..3149c68822 --- /dev/null +++ b/students/495232796/OOD/bridgepattern/Drawing.java @@ -0,0 +1,6 @@ +package com.coderising.dp.bridge; + +public interface Drawing { + public void drawLine(int x1,int y1,int x2,int y2); + public void drawCircle(int x,int y, int r); +} diff --git a/students/495232796/OOD/bridgepattern/GraphicLibrary1.java b/students/495232796/OOD/bridgepattern/GraphicLibrary1.java new file mode 100644 index 0000000000..1ecf2f0548 --- /dev/null +++ b/students/495232796/OOD/bridgepattern/GraphicLibrary1.java @@ -0,0 +1,10 @@ +package com.coderising.dp.bridge; + +public class GraphicLibrary1{ + public void draw_a_line(int x1,int y1,int x2,int y2){ + System.out.println("Draw a line with using library1."); + } + public void draw_a_circle(int x,int y, int r){ + System.out.println("Draw a circle with using library1"); + } +} diff --git a/students/495232796/OOD/bridgepattern/GraphicLibrary1Adapter.java b/students/495232796/OOD/bridgepattern/GraphicLibrary1Adapter.java new file mode 100644 index 0000000000..8e33fd2482 --- /dev/null +++ b/students/495232796/OOD/bridgepattern/GraphicLibrary1Adapter.java @@ -0,0 +1,15 @@ +package com.coderising.dp.bridge; + +public class GraphicLibrary1Adapter implements Drawing{ + GraphicLibrary1 glib = new GraphicLibrary1(); + @Override + public void drawLine(int x1, int y1, int x2, int y2) { + this.glib.draw_a_line(x1, y1, x2, y2); + } + + @Override + public void drawCircle(int x, int y, int r) { + this.glib.draw_a_circle(x, y, r); + } + +} diff --git a/students/495232796/OOD/bridgepattern/GraphicLibrary2.java b/students/495232796/OOD/bridgepattern/GraphicLibrary2.java new file mode 100644 index 0000000000..f008fa54db --- /dev/null +++ b/students/495232796/OOD/bridgepattern/GraphicLibrary2.java @@ -0,0 +1,10 @@ +package com.coderising.dp.bridge; + +public class GraphicLibrary2 implements Drawing{ + public void drawLine(int x1,int x2,int y1,int y2){ + System.out.println("Draw a line with using library2."); + } + public void drawCircle(int x,int y, int r){ + System.out.println("Draw a circle with using library2."); + } +} diff --git a/students/495232796/OOD/bridgepattern/Shape.java b/students/495232796/OOD/bridgepattern/Shape.java new file mode 100644 index 0000000000..34861f43f9 --- /dev/null +++ b/students/495232796/OOD/bridgepattern/Shape.java @@ -0,0 +1,10 @@ +package com.coderising.dp.bridge; + +public abstract class Shape { + public Drawing drawing; + public Shape(Drawing drawing) { + this.drawing = drawing; + } + public void draw() { + } +} diff --git a/students/495232796/OOD/compositepattern/Line.java b/students/495232796/OOD/compositepattern/Line.java new file mode 100644 index 0000000000..884e8d9220 --- /dev/null +++ b/students/495232796/OOD/compositepattern/Line.java @@ -0,0 +1,10 @@ +package com.coderising.dp.composite; + +public class Line implements Shape { + + @Override + public void draw() { + System.out.println("This is a line."); + } + +} diff --git a/students/495232796/OOD/compositepattern/Picture.java b/students/495232796/OOD/compositepattern/Picture.java new file mode 100644 index 0000000000..8029dc4aac --- /dev/null +++ b/students/495232796/OOD/compositepattern/Picture.java @@ -0,0 +1,19 @@ +package com.coderising.dp.composite; + +import java.util.ArrayList; +import java.util.List; + +public class Picture implements Shape{ + List shapes = new ArrayList<>(); + + @Override + public void draw() { + for(Shape shape : shapes) { + shape.draw(); + } + } + + public void addShape(Shape shape) { + shapes.add(shape); + } +} diff --git a/students/495232796/OOD/compositepattern/Rectangle.java b/students/495232796/OOD/compositepattern/Rectangle.java new file mode 100644 index 0000000000..d0734b4d63 --- /dev/null +++ b/students/495232796/OOD/compositepattern/Rectangle.java @@ -0,0 +1,10 @@ +package com.coderising.dp.composite; + +public class Rectangle implements Shape { + + @Override + public void draw() { + System.out.println("This is a rectangle."); + } + +} diff --git a/students/495232796/OOD/compositepattern/Shape.java b/students/495232796/OOD/compositepattern/Shape.java new file mode 100644 index 0000000000..4562f10b12 --- /dev/null +++ b/students/495232796/OOD/compositepattern/Shape.java @@ -0,0 +1,5 @@ +package com.coderising.dp.composite; + +public interface Shape { + public void draw(); +} diff --git a/students/495232796/OOD/compositepattern/Square.java b/students/495232796/OOD/compositepattern/Square.java new file mode 100644 index 0000000000..30ab0e7b85 --- /dev/null +++ b/students/495232796/OOD/compositepattern/Square.java @@ -0,0 +1,10 @@ +package com.coderising.dp.composite; + +public class Square implements Shape { + + @Override + public void draw() { + System.out.println("This is a sqare."); + } + +} diff --git a/students/495232796/OOD/compositepattern/Text.java b/students/495232796/OOD/compositepattern/Text.java new file mode 100644 index 0000000000..0f831f62fe --- /dev/null +++ b/students/495232796/OOD/compositepattern/Text.java @@ -0,0 +1,10 @@ +package com.coderising.dp.composite; + +public class Text implements Shape { + + @Override + public void draw() { + System.out.println("This is a text."); + } + +} diff --git a/students/495232796/OOD/decoratorpattern/Email.java b/students/495232796/OOD/decoratorpattern/Email.java new file mode 100644 index 0000000000..064de1e837 --- /dev/null +++ b/students/495232796/OOD/decoratorpattern/Email.java @@ -0,0 +1,6 @@ +package com.coderising.dp.decorator; + +public interface Email { + public String getContent(); +} + diff --git a/students/495232796/OOD/decoratorpattern/EmailDecorator.java b/students/495232796/OOD/decoratorpattern/EmailDecorator.java new file mode 100644 index 0000000000..61ea7c2d2a --- /dev/null +++ b/students/495232796/OOD/decoratorpattern/EmailDecorator.java @@ -0,0 +1,13 @@ +package com.coderising.dp.decorator; + +public abstract class EmailDecorator implements Email{ + protected Email email; + + public EmailDecorator(Email e) { + this.email = e; + } + + public String getContent(){ + return this.email.getContent(); + } +} \ No newline at end of file diff --git a/students/495232796/OOD/decoratorpattern/EmailEncryptionDecorator.java b/students/495232796/OOD/decoratorpattern/EmailEncryptionDecorator.java new file mode 100644 index 0000000000..65a6e56a26 --- /dev/null +++ b/students/495232796/OOD/decoratorpattern/EmailEncryptionDecorator.java @@ -0,0 +1,20 @@ +package com.coderising.dp.decorator; + +public class EmailEncryptionDecorator extends EmailDecorator{ + + public EmailEncryptionDecorator(Email e) { + super(e); + } + + public String encryptContext() { + return this.email.getContent(); + } + + public String decryptContext() { + return this.email.getContent(); + } + + public String getContent() { + return this.encryptContext(); + } +} diff --git a/students/495232796/OOD/decoratorpattern/EmailImpl.java b/students/495232796/OOD/decoratorpattern/EmailImpl.java new file mode 100644 index 0000000000..640aef6da3 --- /dev/null +++ b/students/495232796/OOD/decoratorpattern/EmailImpl.java @@ -0,0 +1,12 @@ +package com.coderising.dp.decorator; + +public class EmailImpl implements Email { + private String content; + + public EmailImpl(String content) { + this.content = content; + } + public String getContent() { + return content; + } +} diff --git a/students/495232796/OOD/decoratorpattern/EmailStatementDecorator.java b/students/495232796/OOD/decoratorpattern/EmailStatementDecorator.java new file mode 100644 index 0000000000..15e14ecabd --- /dev/null +++ b/students/495232796/OOD/decoratorpattern/EmailStatementDecorator.java @@ -0,0 +1,22 @@ +package com.coderising.dp.decorator; + +public class EmailStatementDecorator extends EmailDecorator{ + private String statement; + + public EmailStatementDecorator(Email e) { + super(e); + } + + public String getStatement() { + return statement; + } + + public void setStatement(String statement) { + this.statement = statement; + } + + public String getContent() { + return this.email.getContent() + this.statement; + } + +} From eb15c6a24a2665f118551ae680579db538594a77 Mon Sep 17 00:00:00 2001 From: akinaru-lu Date: Sun, 30 Jul 2017 10:28:08 +0900 Subject: [PATCH 05/13] =?UTF-8?q?7-23=E6=97=A5=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/coderising/dp/bridge/Circle.java | 20 ++++++++++++++ .../coderising/dp/bridge/GraphicLibrary.java | 9 +++++++ .../coderising/dp/bridge/GraphicLibrary1.java | 26 +++++++++++++++++++ .../coderising/dp/bridge/GraphicLibrary2.java | 21 +++++++++++++++ .../com/coderising/dp/bridge/Rectangle.java | 21 +++++++++++++++ .../java/com/coderising/dp/bridge/Shape.java | 7 +++++ .../com/coderising/dp/composite/Line.java | 9 +++++++ .../com/coderising/dp/composite/Picture.java | 17 ++++++++++++ .../coderising/dp/composite/Rectangle.java | 11 ++++++++ .../com/coderising/dp/composite/Shape.java | 5 ++++ .../com/coderising/dp/composite/Square.java | 10 +++++++ .../com/coderising/dp/composite/Text.java | 10 +++++++ .../com/coderising/dp/decorator/Email.java | 8 ++++++ .../dp/decorator/EmailDecorator.java | 4 +++ .../coderising/dp/decorator/EmailImpl.java | 14 ++++++++++ .../dp/decorator/ExternalEmail.java | 14 ++++++++++ .../dp/decorator/InternalEmail.java | 11 ++++++++ 17 files changed, 217 insertions(+) create mode 100644 students/729770920/ood/ood-assignment/src/main/java/com/coderising/dp/bridge/Circle.java create mode 100644 students/729770920/ood/ood-assignment/src/main/java/com/coderising/dp/bridge/GraphicLibrary.java create mode 100644 students/729770920/ood/ood-assignment/src/main/java/com/coderising/dp/bridge/GraphicLibrary1.java create mode 100644 students/729770920/ood/ood-assignment/src/main/java/com/coderising/dp/bridge/GraphicLibrary2.java create mode 100644 students/729770920/ood/ood-assignment/src/main/java/com/coderising/dp/bridge/Rectangle.java create mode 100644 students/729770920/ood/ood-assignment/src/main/java/com/coderising/dp/bridge/Shape.java create mode 100644 students/729770920/ood/ood-assignment/src/main/java/com/coderising/dp/composite/Line.java create mode 100644 students/729770920/ood/ood-assignment/src/main/java/com/coderising/dp/composite/Picture.java create mode 100644 students/729770920/ood/ood-assignment/src/main/java/com/coderising/dp/composite/Rectangle.java create mode 100644 students/729770920/ood/ood-assignment/src/main/java/com/coderising/dp/composite/Shape.java create mode 100644 students/729770920/ood/ood-assignment/src/main/java/com/coderising/dp/composite/Square.java create mode 100644 students/729770920/ood/ood-assignment/src/main/java/com/coderising/dp/composite/Text.java create mode 100644 students/729770920/ood/ood-assignment/src/main/java/com/coderising/dp/decorator/Email.java create mode 100644 students/729770920/ood/ood-assignment/src/main/java/com/coderising/dp/decorator/EmailDecorator.java create mode 100644 students/729770920/ood/ood-assignment/src/main/java/com/coderising/dp/decorator/EmailImpl.java create mode 100644 students/729770920/ood/ood-assignment/src/main/java/com/coderising/dp/decorator/ExternalEmail.java create mode 100644 students/729770920/ood/ood-assignment/src/main/java/com/coderising/dp/decorator/InternalEmail.java diff --git a/students/729770920/ood/ood-assignment/src/main/java/com/coderising/dp/bridge/Circle.java b/students/729770920/ood/ood-assignment/src/main/java/com/coderising/dp/bridge/Circle.java new file mode 100644 index 0000000000..af7b07c91b --- /dev/null +++ b/students/729770920/ood/ood-assignment/src/main/java/com/coderising/dp/bridge/Circle.java @@ -0,0 +1,20 @@ +package bridge; + +public class Circle implements Shape { + + private int x; + private int y; + private int r; + + public Circle(int x, int y, int r) { + this.x = x; + this.y = y; + this.r = r; + } + + @Override + public void draw(GraphicLibrary gl) { + gl.drawCircle(x, y, r); + } + +} diff --git a/students/729770920/ood/ood-assignment/src/main/java/com/coderising/dp/bridge/GraphicLibrary.java b/students/729770920/ood/ood-assignment/src/main/java/com/coderising/dp/bridge/GraphicLibrary.java new file mode 100644 index 0000000000..73088a9324 --- /dev/null +++ b/students/729770920/ood/ood-assignment/src/main/java/com/coderising/dp/bridge/GraphicLibrary.java @@ -0,0 +1,9 @@ +package bridge; + +public interface GraphicLibrary { + + void drawRectangle(int x1, int y1, int x2, int y2); + + void drawCircle(int x, int y, int r); + +} diff --git a/students/729770920/ood/ood-assignment/src/main/java/com/coderising/dp/bridge/GraphicLibrary1.java b/students/729770920/ood/ood-assignment/src/main/java/com/coderising/dp/bridge/GraphicLibrary1.java new file mode 100644 index 0000000000..a53f877500 --- /dev/null +++ b/students/729770920/ood/ood-assignment/src/main/java/com/coderising/dp/bridge/GraphicLibrary1.java @@ -0,0 +1,26 @@ +package bridge; + +public class GraphicLibrary1 implements GraphicLibrary { + + @Override + public void drawRectangle(int x1, int y1, int x2, int y2) { + draw_a_line(x1, y1, x1, y2); + draw_a_line(x1, y2, x2, y2); + draw_a_line(x2, y2, x2, y1); + draw_a_line(x2, y1, x1, y1); + } + + @Override + public void drawCircle(int x, int y, int r) { + draw_a_circle(x, y, r); + } + + private void draw_a_line(int x1, int y1, int x2, int y2) { + + } + + private void draw_a_circle(int x, int y, int r) { + + } + +} diff --git a/students/729770920/ood/ood-assignment/src/main/java/com/coderising/dp/bridge/GraphicLibrary2.java b/students/729770920/ood/ood-assignment/src/main/java/com/coderising/dp/bridge/GraphicLibrary2.java new file mode 100644 index 0000000000..6ad1bdc5dd --- /dev/null +++ b/students/729770920/ood/ood-assignment/src/main/java/com/coderising/dp/bridge/GraphicLibrary2.java @@ -0,0 +1,21 @@ +package bridge; + +public class GraphicLibrary2 implements GraphicLibrary { + + @Override + public void drawRectangle(int x1, int y1, int x2, int y2) { + drawLine(x1, x2, y1, y2); + drawLine(x1, x2, y2, y2); + drawLine(x2, x2, y2, y1); + drawLine(x2, x1, y1, y1); + } + + @Override + public void drawCircle(int x,int y, int r) { + + } + + private void drawLine(int x1, int x2, int y1, int y2) { + } + +} diff --git a/students/729770920/ood/ood-assignment/src/main/java/com/coderising/dp/bridge/Rectangle.java b/students/729770920/ood/ood-assignment/src/main/java/com/coderising/dp/bridge/Rectangle.java new file mode 100644 index 0000000000..471c2b94ec --- /dev/null +++ b/students/729770920/ood/ood-assignment/src/main/java/com/coderising/dp/bridge/Rectangle.java @@ -0,0 +1,21 @@ +package bridge; + +public class Rectangle implements Shape { + + private int x1; + private int y1; + private int x2; + private int y2; + + public Rectangle(int x1, int y1, int x2, int y2) { + this.x1 = x1; + this.y1 = y1; + this.x2 = x2; + this.y2 = y2; + } + + @Override + public void draw(GraphicLibrary gl) { + gl.drawRectangle(x1, y1, x2, y2); + } +} diff --git a/students/729770920/ood/ood-assignment/src/main/java/com/coderising/dp/bridge/Shape.java b/students/729770920/ood/ood-assignment/src/main/java/com/coderising/dp/bridge/Shape.java new file mode 100644 index 0000000000..1b6e584cd4 --- /dev/null +++ b/students/729770920/ood/ood-assignment/src/main/java/com/coderising/dp/bridge/Shape.java @@ -0,0 +1,7 @@ +package bridge; + +public interface Shape { + + void draw(GraphicLibrary gl); + +} diff --git a/students/729770920/ood/ood-assignment/src/main/java/com/coderising/dp/composite/Line.java b/students/729770920/ood/ood-assignment/src/main/java/com/coderising/dp/composite/Line.java new file mode 100644 index 0000000000..d15975aaad --- /dev/null +++ b/students/729770920/ood/ood-assignment/src/main/java/com/coderising/dp/composite/Line.java @@ -0,0 +1,9 @@ +package composite; + +public class Line implements Shape { + + @Override + public void draw() { + } + +} diff --git a/students/729770920/ood/ood-assignment/src/main/java/com/coderising/dp/composite/Picture.java b/students/729770920/ood/ood-assignment/src/main/java/com/coderising/dp/composite/Picture.java new file mode 100644 index 0000000000..80bfa14450 --- /dev/null +++ b/students/729770920/ood/ood-assignment/src/main/java/com/coderising/dp/composite/Picture.java @@ -0,0 +1,17 @@ +package composite; + +import java.util.ArrayList; +import java.util.List; + +public class Picture implements Shape { + private final List shapes = new ArrayList<>(); + + @Override + public void draw() { + shapes.forEach(shape -> draw()); + } + + public void add(Shape shape) { + shapes.add(shape); + } +} diff --git a/students/729770920/ood/ood-assignment/src/main/java/com/coderising/dp/composite/Rectangle.java b/students/729770920/ood/ood-assignment/src/main/java/com/coderising/dp/composite/Rectangle.java new file mode 100644 index 0000000000..4902fbcd99 --- /dev/null +++ b/students/729770920/ood/ood-assignment/src/main/java/com/coderising/dp/composite/Rectangle.java @@ -0,0 +1,11 @@ +package composite; + +public class Rectangle implements Shape { + + @Override + public void draw() { + // TODO Auto-generated method stub + + } + +} diff --git a/students/729770920/ood/ood-assignment/src/main/java/com/coderising/dp/composite/Shape.java b/students/729770920/ood/ood-assignment/src/main/java/com/coderising/dp/composite/Shape.java new file mode 100644 index 0000000000..8864087e5f --- /dev/null +++ b/students/729770920/ood/ood-assignment/src/main/java/com/coderising/dp/composite/Shape.java @@ -0,0 +1,5 @@ +package composite; + +public interface Shape { + public void draw(); +} diff --git a/students/729770920/ood/ood-assignment/src/main/java/com/coderising/dp/composite/Square.java b/students/729770920/ood/ood-assignment/src/main/java/com/coderising/dp/composite/Square.java new file mode 100644 index 0000000000..9aff729f35 --- /dev/null +++ b/students/729770920/ood/ood-assignment/src/main/java/com/coderising/dp/composite/Square.java @@ -0,0 +1,10 @@ +package composite; + +public class Square implements Shape { + + @Override + public void draw() { + // TODO Auto-generated method stub + } + +} diff --git a/students/729770920/ood/ood-assignment/src/main/java/com/coderising/dp/composite/Text.java b/students/729770920/ood/ood-assignment/src/main/java/com/coderising/dp/composite/Text.java new file mode 100644 index 0000000000..15305bb9e6 --- /dev/null +++ b/students/729770920/ood/ood-assignment/src/main/java/com/coderising/dp/composite/Text.java @@ -0,0 +1,10 @@ +package composite; + +public class Text implements Shape { + + @Override + public void draw() { + // TODO Auto-generated method stub + } + +} diff --git a/students/729770920/ood/ood-assignment/src/main/java/com/coderising/dp/decorator/Email.java b/students/729770920/ood/ood-assignment/src/main/java/com/coderising/dp/decorator/Email.java new file mode 100644 index 0000000000..c36050aa31 --- /dev/null +++ b/students/729770920/ood/ood-assignment/src/main/java/com/coderising/dp/decorator/Email.java @@ -0,0 +1,8 @@ +package decorator; + +public interface Email { + + String getContent(); + +} + diff --git a/students/729770920/ood/ood-assignment/src/main/java/com/coderising/dp/decorator/EmailDecorator.java b/students/729770920/ood/ood-assignment/src/main/java/com/coderising/dp/decorator/EmailDecorator.java new file mode 100644 index 0000000000..0cadd60575 --- /dev/null +++ b/students/729770920/ood/ood-assignment/src/main/java/com/coderising/dp/decorator/EmailDecorator.java @@ -0,0 +1,4 @@ +package decorator; + +public abstract class EmailDecorator implements Email { +} \ No newline at end of file diff --git a/students/729770920/ood/ood-assignment/src/main/java/com/coderising/dp/decorator/EmailImpl.java b/students/729770920/ood/ood-assignment/src/main/java/com/coderising/dp/decorator/EmailImpl.java new file mode 100644 index 0000000000..7044dc9c47 --- /dev/null +++ b/students/729770920/ood/ood-assignment/src/main/java/com/coderising/dp/decorator/EmailImpl.java @@ -0,0 +1,14 @@ +package decorator; + +public class EmailImpl implements Email { + + private String content; + + public EmailImpl(String content) { + this.content = content; + } + + public String getContent() { + return content; + } +} diff --git a/students/729770920/ood/ood-assignment/src/main/java/com/coderising/dp/decorator/ExternalEmail.java b/students/729770920/ood/ood-assignment/src/main/java/com/coderising/dp/decorator/ExternalEmail.java new file mode 100644 index 0000000000..1dc01a34bf --- /dev/null +++ b/students/729770920/ood/ood-assignment/src/main/java/com/coderising/dp/decorator/ExternalEmail.java @@ -0,0 +1,14 @@ +package decorator; + +public class ExternalEmail extends EmailDecorator { + + private Email email; + + public ExternalEmail(Email email) { + this.email = email; + } + + public String getContent() { + return email.getContent() + "\n\n本邮件仅为个人观点,并不代表公司立场"; + } +} diff --git a/students/729770920/ood/ood-assignment/src/main/java/com/coderising/dp/decorator/InternalEmail.java b/students/729770920/ood/ood-assignment/src/main/java/com/coderising/dp/decorator/InternalEmail.java new file mode 100644 index 0000000000..885a7573db --- /dev/null +++ b/students/729770920/ood/ood-assignment/src/main/java/com/coderising/dp/decorator/InternalEmail.java @@ -0,0 +1,11 @@ +package decorator; + +public class InternalEmail extends EmailDecorator { + + private Email email; + + public String getContent() { + return email.getContent(); + } + +} From 155bd791bf3ddfe6a7bb00c22182b4a0e2e75f12 Mon Sep 17 00:00:00 2001 From: Thomas Young Date: Sun, 30 Jul 2017 21:17:25 +0800 Subject: [PATCH 06/13] =?UTF-8?q?[Feature]=20ATM=E5=88=9D=E6=AD=A5?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- students/812350401/pom.xml | 9 +- .../coderising/myood/atmSimulation/README.md | 4 +- .../myood/atmSimulation/impl/ATM.java | 137 ++++++++++++++++++ .../atmSimulation/impl/BankProxyImpl.java | 23 +++ .../atmSimulation/impl/CardReaderImpl.java | 33 +++++ .../atmSimulation/impl/CashDispenserImpl.java | 24 +++ .../atmSimulation/impl/DepositSlotImpl.java | 16 ++ .../impl/DepositTransaction.java | 56 +++++++ .../myood/atmSimulation/impl/DisplayImpl.java | 23 +++ .../atmSimulation/impl/KeyBoardImpl.java | 27 ++++ .../atmSimulation/impl/NetworkClient.java | 16 ++ .../myood/atmSimulation/impl/SuperKeyPad.java | 98 +++++++++++++ .../impl/WithdrawTransaction.java | 49 +++++++ .../myood/atmSimulation/model/BankProxy.java | 22 +++ .../myood/atmSimulation/model/CardReader.java | 10 ++ .../atmSimulation/model/CashDispenser.java | 22 +++ .../atmSimulation/model/DepositSlot.java | 14 ++ .../myood/atmSimulation/model/Display.java | 9 ++ .../myood/atmSimulation/model/KeyBoard.java | 8 + .../myood/atmSimulation/model/Printer.java | 8 + .../atmSimulation/model/Transaction.java | 45 ++++++ .../atmSimulation/utils/SingletonScanner.java | 18 +++ .../myood/atmSimulation/impl/ATMTest.java | 34 +++++ .../atmSimulation/impl/BankProxyImplTest.java | 31 ++++ .../atmSimulation/impl/SuperKeyPadTest.java | 72 +++++++++ .../atmSimulation/model/CardReaderTest.java | 33 +++++ .../atmSimulation/model/DisplayTest.java | 23 +++ .../atmSimulation/model/KeyBoardTest.java | 29 ++++ .../atmSimulation/model/TransactionTest.java | 54 +++++++ 29 files changed, 944 insertions(+), 3 deletions(-) create mode 100644 students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/ATM.java create mode 100644 students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/BankProxyImpl.java create mode 100644 students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/CardReaderImpl.java create mode 100644 students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/CashDispenserImpl.java create mode 100644 students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/DepositSlotImpl.java create mode 100644 students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/DepositTransaction.java create mode 100644 students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/DisplayImpl.java create mode 100644 students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/KeyBoardImpl.java create mode 100644 students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/NetworkClient.java create mode 100644 students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/SuperKeyPad.java create mode 100644 students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/WithdrawTransaction.java create mode 100644 students/812350401/src/main/java/com/coderising/myood/atmSimulation/model/BankProxy.java create mode 100644 students/812350401/src/main/java/com/coderising/myood/atmSimulation/model/CardReader.java create mode 100644 students/812350401/src/main/java/com/coderising/myood/atmSimulation/model/CashDispenser.java create mode 100644 students/812350401/src/main/java/com/coderising/myood/atmSimulation/model/DepositSlot.java create mode 100644 students/812350401/src/main/java/com/coderising/myood/atmSimulation/model/Display.java create mode 100644 students/812350401/src/main/java/com/coderising/myood/atmSimulation/model/KeyBoard.java create mode 100644 students/812350401/src/main/java/com/coderising/myood/atmSimulation/model/Printer.java create mode 100644 students/812350401/src/main/java/com/coderising/myood/atmSimulation/model/Transaction.java create mode 100644 students/812350401/src/main/java/com/coderising/myood/atmSimulation/utils/SingletonScanner.java create mode 100644 students/812350401/tests/com/coderising/myood/atmSimulation/impl/ATMTest.java create mode 100644 students/812350401/tests/com/coderising/myood/atmSimulation/impl/BankProxyImplTest.java create mode 100644 students/812350401/tests/com/coderising/myood/atmSimulation/impl/SuperKeyPadTest.java create mode 100644 students/812350401/tests/com/coderising/myood/atmSimulation/model/CardReaderTest.java create mode 100644 students/812350401/tests/com/coderising/myood/atmSimulation/model/DisplayTest.java create mode 100644 students/812350401/tests/com/coderising/myood/atmSimulation/model/KeyBoardTest.java create mode 100644 students/812350401/tests/com/coderising/myood/atmSimulation/model/TransactionTest.java diff --git a/students/812350401/pom.xml b/students/812350401/pom.xml index 13499886be..e33e2dad03 100644 --- a/students/812350401/pom.xml +++ b/students/812350401/pom.xml @@ -28,8 +28,13 @@ - - + + + org.apache.commons + commons-lang3 + 3.6 + + junit junit 4.12 diff --git a/students/812350401/src/main/java/com/coderising/myood/atmSimulation/README.md b/students/812350401/src/main/java/com/coderising/myood/atmSimulation/README.md index 8df2519517..0353e9cc41 100644 --- a/students/812350401/src/main/java/com/coderising/myood/atmSimulation/README.md +++ b/students/812350401/src/main/java/com/coderising/myood/atmSimulation/README.md @@ -4,7 +4,9 @@ https://github.com/onlyliuxin/coding2017/pull/512 ## atm需求 一个ATM是一台机器,包含读卡设备,显示屏,吐钞口,存钞口,键盘,打印机 -当机器空闲时,会显示一个欢迎消息,此时键盘和存钞口都是不活动的,直到一张银行卡被插入,读卡器会尝试读取这张卡,如果不可读,会提示用户并且弹出卡片如果卡片可读,读卡设备会读取账号,然后要求用户输入密码, 用户的输入应该显示为星号,而不是真正输入的数字。 +当机器空闲时,会显示一个欢迎消息,此时键盘和存钞口都是不活动的,直到一张银行卡被插入,读卡器会尝试读取这张卡,如果不可读, +会提示用户并且弹出卡片 +如果卡片可读,读卡设备会读取账号,然后要求用户输入密码, 用户的输入应该显示为星号,而不是真正输入的数字。 如果用户输入的密码正确,则显示主菜单; 如果不正确,再给用户两次输入机会,如果第三次依然失败,ATM就吞卡 主菜单提示用户可以: diff --git a/students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/ATM.java b/students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/ATM.java new file mode 100644 index 0000000000..dd51fcae73 --- /dev/null +++ b/students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/ATM.java @@ -0,0 +1,137 @@ +package com.coderising.myood.atmSimulation.impl; + +import com.coderising.myood.atmSimulation.model.*; + +/** + * Created by thomas_young on 30/7/2017. + * ATM对象 + */ +public class ATM { + private CardReader cardReader; + private SuperKeyPad superKeyPad; + private CashDispenser cashDispenser; + private DepositSlot depositSlot; + private Printer printer; + private BankProxy bankProxy; + /** + * 判断取款金额 + * @param amount + * @return + */ + public boolean hasEnoughMoney(Double amount) { + return cashDispenser.hasEnoughMoney(amount); + } + + /** + * 取款 + * @param amount + */ + public void dispenseMoney(Double amount) { + cashDispenser.dispenseMoney(amount); + } + + /** + * 存款 + * @return + */ + public Double retrieveMoney(Double amount) { + return depositSlot.saveMoney(amount); + } + + /** + * 主流程 + */ + public void start() { + // step1. 读卡 + String account; + while(true) { + account = cardReader.getAccount(); + if(account != null) { + System.out.println("读卡成功,卡号是"+account); + break; + } + try { + Thread.sleep(100); + } catch (InterruptedException e) { + } + } + + // step2. 读取密码,并做校验 + int failedCount = 0; + boolean verfied = false; + String password = null; + while (failedCount < 3) { + password = superKeyPad.getPassword(); + verfied = bankProxy.verify(account, password); + if (verfied) { + break; + } + } + if (!verfied) { + System.out.println("输错密码超过3次"); + cardReader.eatCard(); + return; + } + + // step3. 输入交易类型,进行交易 + Transaction transaction = superKeyPad.getTransaction(account, password); + boolean valid = transaction.preProcess(this); + if (!valid) { + return; + } + boolean success = bankProxy.process(transaction); + if (!success) { + System.out.printf("银行处理出错"); + } else { + System.out.println("银行已经处理完成"); + transaction.postProcess(this); + } + + // last step. 最后记得把卡吐出 + cardReader.ejectCard(); + } + + public CardReader getCardReader() { + return cardReader; + } + + public void setCardReader(CardReader cardReader) { + this.cardReader = cardReader; + } + + public SuperKeyPad getSuperKeyPad() { + return superKeyPad; + } + + public void setSuperKeyPad(SuperKeyPad superKeyPad) { + this.superKeyPad = superKeyPad; + } + + public CashDispenser getCashDispenser() { + return cashDispenser; + } + + public void setCashDispenser(CashDispenser cashDispenser) { + this.cashDispenser = cashDispenser; + } + + public DepositSlot getDepositSlot() { + return depositSlot; + } + + public void setDepositSlot(DepositSlot depositSlot) { + this.depositSlot = depositSlot; + } + + public Printer getPrinter() { + return printer; + } + + public void setPrinter(Printer printer) { + this.printer = printer; + } + + public void setBankProxy(BankProxy bankProxy) { + this.bankProxy = bankProxy; + } +} diff --git a/students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/BankProxyImpl.java b/students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/BankProxyImpl.java new file mode 100644 index 0000000000..59de304cae --- /dev/null +++ b/students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/BankProxyImpl.java @@ -0,0 +1,23 @@ +package com.coderising.myood.atmSimulation.impl; + +import com.coderising.myood.atmSimulation.model.BankProxy; +import com.coderising.myood.atmSimulation.model.Transaction; + +/** + * Created by thomas_young on 30/7/2017. + */ +public class BankProxyImpl extends BankProxy { + + @Override + public boolean verify(String account, String password) { + return networkClient.verify(account, password); + } + + @Override + public boolean process(Transaction transaction) { + System.out.println("开始把transaction发给银行做处理"); + System.out.println(transaction.getClass()); + System.out.println(transaction); + return true; + } +} diff --git a/students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/CardReaderImpl.java b/students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/CardReaderImpl.java new file mode 100644 index 0000000000..bdc62a8ffc --- /dev/null +++ b/students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/CardReaderImpl.java @@ -0,0 +1,33 @@ +package com.coderising.myood.atmSimulation.impl; + +import com.coderising.myood.atmSimulation.model.CardReader; + +/** + * Created by thomas_young on 30/7/2017. + */ +public class CardReaderImpl implements CardReader { + private Integer retryTimes = 0; + + @Override + public String getAccount() { + // 模拟读三次才把卡读出 + if (retryTimes <= 2) { + System.out.println("没有卡哟"); + retryTimes++; + return null; + } + return "123456"; + } + + @Override + public void ejectCard() { + System.out.printf("吐出卡片, 请收好"); + retryTimes = 0; + } + + @Override + public void eatCard() { + System.out.printf("吞卡!"); + retryTimes = 0; + } +} diff --git a/students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/CashDispenserImpl.java b/students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/CashDispenserImpl.java new file mode 100644 index 0000000000..22483bb6a6 --- /dev/null +++ b/students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/CashDispenserImpl.java @@ -0,0 +1,24 @@ +package com.coderising.myood.atmSimulation.impl; + +import com.coderising.myood.atmSimulation.model.CashDispenser; + +/** + * Created by thomas_young on 30/7/2017. + * 吐钞口/取款口 + */ +public class CashDispenserImpl implements CashDispenser { + // 方便起见,假设atm机子里有这么多前,而且不会变 todo magic number! + private static Double totalAmount = 10000d; + @Override + public boolean hasEnoughMoney(Double amount) { + if (amount <= totalAmount) + return true; + System.out.println("atm没钱啦"); + return false; + } + + @Override + public void dispenseMoney(Double amount) { + System.out.println("取款:吐出"+amount+"元"); + } +} diff --git a/students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/DepositSlotImpl.java b/students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/DepositSlotImpl.java new file mode 100644 index 0000000000..b04b9016db --- /dev/null +++ b/students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/DepositSlotImpl.java @@ -0,0 +1,16 @@ +package com.coderising.myood.atmSimulation.impl; + +import com.coderising.myood.atmSimulation.model.DepositSlot; + +/** + * Created by thomas_young on 30/7/2017. + */ +public class DepositSlotImpl implements DepositSlot { + @Override + public Double saveMoney(Double amount) { + System.out.println("存款: 请放入钞票"+amount+"元"); + // TODO: 30/7/2017 magic number! + Double actualAmount = amount - 5d; // 5元手续费 + return actualAmount < 0d ? 0d:actualAmount; + } +} diff --git a/students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/DepositTransaction.java b/students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/DepositTransaction.java new file mode 100644 index 0000000000..ad2679a8c5 --- /dev/null +++ b/students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/DepositTransaction.java @@ -0,0 +1,56 @@ +package com.coderising.myood.atmSimulation.impl; + +import com.coderising.myood.atmSimulation.model.Transaction; + +/** + * Created by thomas_young on 30/7/2017. + */ +public class DepositTransaction extends Transaction { + // 该取款交易的存款金额 + private Double amount; + private Double actualAmount; + + public DepositTransaction(String account, String password, Double amount) { + super(account, password); + this.amount = amount; + } + + @Override + public boolean preProcess(ATM atm) { + actualAmount = atm.retrieveMoney(amount); + System.out.println("实际存款"+actualAmount+"元"); + return true; + } + + /** + * 什么都不做 + * @param atm + * @return + */ + @Override + public boolean postProcess(ATM atm) { + // TODO: 30/7/2017 只是为了调试,建议删除 + System.out.printf("存款postProcess: 什么都不做"); + return true; + } + + @Override + public String toNetworkPackage() { + return null; + } + + @Override + public String toString() { + return super.toString() + " DepositTransaction{" + + "amount=" + amount + + '}'; + } + + public Double getAmount() { + return amount; + } + + public Double getActualAmount() { + return actualAmount; + } +} diff --git a/students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/DisplayImpl.java b/students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/DisplayImpl.java new file mode 100644 index 0000000000..7a4e638143 --- /dev/null +++ b/students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/DisplayImpl.java @@ -0,0 +1,23 @@ +package com.coderising.myood.atmSimulation.impl; + +import com.coderising.myood.atmSimulation.model.Display; +import org.apache.commons.lang3.StringUtils; + +/** + * Created by thomas_young on 30/7/2017. + */ +public class DisplayImpl implements Display { + @Override + public void outputPlainText(String message) { + System.out.printf(message); + } + + @Override + public void outputEncryptedText(String message) { + System.out.println(StringUtils.repeat("*", message.length())); + } + + public static void main(String[] args) { + System.out.printf(StringUtils.repeat("*", "abc".length())); + } +} diff --git a/students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/KeyBoardImpl.java b/students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/KeyBoardImpl.java new file mode 100644 index 0000000000..15ad2aaf31 --- /dev/null +++ b/students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/KeyBoardImpl.java @@ -0,0 +1,27 @@ +package com.coderising.myood.atmSimulation.impl; + +import com.coderising.myood.atmSimulation.model.KeyBoard; +import com.coderising.myood.atmSimulation.utils.SingletonScanner; + +import java.util.Scanner; + +/** + * Created by thomas_young on 30/7/2017. + */ +public class KeyBoardImpl implements KeyBoard { + @Override + public String input() { + Scanner sc = SingletonScanner.getInstance(); + String input = sc.nextLine(); + return input; + } + + public static void main(String[] args) { + KeyBoard keyBoard = new KeyBoardImpl(); + String input = keyBoard.input(); + System.out.printf(input); + input = keyBoard.input(); + System.out.printf(input); + + } +} diff --git a/students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/NetworkClient.java b/students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/NetworkClient.java new file mode 100644 index 0000000000..8339ac8768 --- /dev/null +++ b/students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/NetworkClient.java @@ -0,0 +1,16 @@ +package com.coderising.myood.atmSimulation.impl; + +/** + * Created by thomas_young on 30/7/2017. + */ +public class NetworkClient { + private static final String actualPwd = "123456"; + + public boolean verify(String account, String password) { + // TODO: 30/7/2017 暂时写死,以后可以考虑加入银行那边类的交互 + if (account!=null && actualPwd.equals(password)) { + return true; + } + return false; + } +} diff --git a/students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/SuperKeyPad.java b/students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/SuperKeyPad.java new file mode 100644 index 0000000000..befc2fb46b --- /dev/null +++ b/students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/SuperKeyPad.java @@ -0,0 +1,98 @@ +package com.coderising.myood.atmSimulation.impl; + +import com.coderising.myood.atmSimulation.model.Display; +import com.coderising.myood.atmSimulation.model.KeyBoard; +import com.coderising.myood.atmSimulation.model.Transaction; + +/** + * Created by thomas_young on 30/7/2017. + * 超级键盘协调用户输入和显示星号的关系 + */ +public class SuperKeyPad { + private Display display; + private KeyBoard keyBoard; + + /** + * 提示用户输入密码,待用户输入完成后,显示星号 + * 并把明文密码返回(为了简单起见) + * @return + */ + public String getPassword() { + System.out.println("请输入密码:"); + String input = keyBoard.input(); + display.outputEncryptedText(input); + return input; + } + + public void displayMessage(String message) { + display.outputPlainText(message); + } + + public Transaction getTransaction(String account, String password) { + display.outputPlainText("请输入交易类型:"); + display.outputPlainText("W: 取款"); + display.outputPlainText("D: 存款"); + display.outputPlainText("T: 转账"); + display.outputPlainText("B: 查询余额"); + while(true) { + String input = keyBoard.input(); + switch (input) { + case "W": + return getWithdrawTrx(account, password); + case "D": + return getDepositTrx(account, password); + case "T": + return null; + case "B": + return null; + default: + System.out.printf("输入有误,请重新输入"); + } + } + } + + private Transaction getWithdrawTrx(String account, String password) { + while(true) { + display.outputPlainText("请输入取现金额:"); + String input = keyBoard.input(); + try { + Double amount = Double.valueOf(input); + return new WithdrawTransaction(account, password, amount); + } catch (NumberFormatException e) { + System.out.printf("格式有误,请重新输入"); + } + } + } + + private Transaction getDepositTrx(String account, String password) { + while(true) { + display.outputPlainText("请输入存款金额:"); + String input = keyBoard.input(); + try { + Double amount = Double.valueOf(input); + return new DepositTransaction(account, password, amount); + } catch (NumberFormatException e) { + System.out.printf("格式有误,请重新输入"); + } + } + } + + public void setDisplay(Display display) { + this.display = display; + } + + public void setKeyBoard(KeyBoard keyBoard) { + this.keyBoard = keyBoard; + } + + public static void main(String[] args) { + SuperKeyPad superKeyPad = new SuperKeyPad(); + Display display = new DisplayImpl(); + KeyBoard keyBoard = new KeyBoardImpl(); + superKeyPad.setKeyBoard(keyBoard); + superKeyPad.setDisplay(display); + Transaction transaction = superKeyPad.getTransaction("yangkai", "123456"); + System.out.println(transaction); + + } +} diff --git a/students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/WithdrawTransaction.java b/students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/WithdrawTransaction.java new file mode 100644 index 0000000000..74b9f32113 --- /dev/null +++ b/students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/WithdrawTransaction.java @@ -0,0 +1,49 @@ +package com.coderising.myood.atmSimulation.impl; + +import com.coderising.myood.atmSimulation.model.Transaction; + +/** + * Created by thomas_young on 30/7/2017. + * 取款交易 + */ +public class WithdrawTransaction extends Transaction { + // 该取款交易的取款金额 + private Double amount; + + public WithdrawTransaction(String account, String password, Double amount) { + super(account, password); + this.amount = amount; + } + + /** + * 判断atm里的钱是否足够 + * @param atm + * @return + */ + @Override + public boolean preProcess(ATM atm) { + return atm.hasEnoughMoney(amount); + } + + @Override + public boolean postProcess(ATM atm) { + atm.dispenseMoney(amount); + return true; + } + + @Override + public String toNetworkPackage() { + return null; + } + + public Double getAmount() { + return amount; + } + + @Override + public String toString() { + return super.toString() + " WithdrawTransaction{" + + "amount=" + amount + + '}'; + } +} diff --git a/students/812350401/src/main/java/com/coderising/myood/atmSimulation/model/BankProxy.java b/students/812350401/src/main/java/com/coderising/myood/atmSimulation/model/BankProxy.java new file mode 100644 index 0000000000..bd1ae67ee5 --- /dev/null +++ b/students/812350401/src/main/java/com/coderising/myood/atmSimulation/model/BankProxy.java @@ -0,0 +1,22 @@ +package com.coderising.myood.atmSimulation.model; + +import com.coderising.myood.atmSimulation.impl.NetworkClient; + +/** + * Created by thomas_young on 30/7/2017. + */ +public abstract class BankProxy { + protected NetworkClient networkClient; + + public abstract boolean verify(String account, String password); + + /** + * 交易发送到银行做处理 + * @param transaction + */ + public abstract boolean process(Transaction transaction); + + public void setNetworkClient(NetworkClient networkClient) { + this.networkClient = networkClient; + } +} diff --git a/students/812350401/src/main/java/com/coderising/myood/atmSimulation/model/CardReader.java b/students/812350401/src/main/java/com/coderising/myood/atmSimulation/model/CardReader.java new file mode 100644 index 0000000000..4488591a45 --- /dev/null +++ b/students/812350401/src/main/java/com/coderising/myood/atmSimulation/model/CardReader.java @@ -0,0 +1,10 @@ +package com.coderising.myood.atmSimulation.model; + +/** + * Created by thomas_young on 30/7/2017. + */ +public interface CardReader { + String getAccount(); + void ejectCard(); + void eatCard(); +} diff --git a/students/812350401/src/main/java/com/coderising/myood/atmSimulation/model/CashDispenser.java b/students/812350401/src/main/java/com/coderising/myood/atmSimulation/model/CashDispenser.java new file mode 100644 index 0000000000..81d167eeb7 --- /dev/null +++ b/students/812350401/src/main/java/com/coderising/myood/atmSimulation/model/CashDispenser.java @@ -0,0 +1,22 @@ +package com.coderising.myood.atmSimulation.model; + + +/** + * Created by thomas_young on 30/7/2017. + * 吐钞口/取款口 + * 判断金额是否足够(我们用它来负责管理atm的金额,不再专门搞一个储钱箱了) + */ +public interface CashDispenser { + /** + * 取款amount,判断余额是否足够 + * @param amount + * @return + */ + boolean hasEnoughMoney(Double amount); + + /** + * 吐出amount的钞票 + * @param amount + */ + void dispenseMoney(Double amount); +} diff --git a/students/812350401/src/main/java/com/coderising/myood/atmSimulation/model/DepositSlot.java b/students/812350401/src/main/java/com/coderising/myood/atmSimulation/model/DepositSlot.java new file mode 100644 index 0000000000..797efc3ba1 --- /dev/null +++ b/students/812350401/src/main/java/com/coderising/myood/atmSimulation/model/DepositSlot.java @@ -0,0 +1,14 @@ +package com.coderising.myood.atmSimulation.model; + +/** + * Created by thomas_young on 30/7/2017. + * 入钞口/存款口 + */ +public interface DepositSlot { + /** + * 存款,可能会口手续费,返回实际存款金额 + * @param amount + * @return + */ + Double saveMoney(Double amount); +} diff --git a/students/812350401/src/main/java/com/coderising/myood/atmSimulation/model/Display.java b/students/812350401/src/main/java/com/coderising/myood/atmSimulation/model/Display.java new file mode 100644 index 0000000000..fb9be85412 --- /dev/null +++ b/students/812350401/src/main/java/com/coderising/myood/atmSimulation/model/Display.java @@ -0,0 +1,9 @@ +package com.coderising.myood.atmSimulation.model; + +/** + * Created by thomas_young on 30/7/2017. + */ +public interface Display { + void outputPlainText(String message); + void outputEncryptedText(String message); +} diff --git a/students/812350401/src/main/java/com/coderising/myood/atmSimulation/model/KeyBoard.java b/students/812350401/src/main/java/com/coderising/myood/atmSimulation/model/KeyBoard.java new file mode 100644 index 0000000000..4bafd55dc0 --- /dev/null +++ b/students/812350401/src/main/java/com/coderising/myood/atmSimulation/model/KeyBoard.java @@ -0,0 +1,8 @@ +package com.coderising.myood.atmSimulation.model; + +/** + * Created by thomas_young on 30/7/2017. + */ +public interface KeyBoard { + String input(); +} diff --git a/students/812350401/src/main/java/com/coderising/myood/atmSimulation/model/Printer.java b/students/812350401/src/main/java/com/coderising/myood/atmSimulation/model/Printer.java new file mode 100644 index 0000000000..0399b65110 --- /dev/null +++ b/students/812350401/src/main/java/com/coderising/myood/atmSimulation/model/Printer.java @@ -0,0 +1,8 @@ +package com.coderising.myood.atmSimulation.model; + +/** + * Created by thomas_young on 30/7/2017. + */ +public interface Printer { + void print(Transaction t); +} diff --git a/students/812350401/src/main/java/com/coderising/myood/atmSimulation/model/Transaction.java b/students/812350401/src/main/java/com/coderising/myood/atmSimulation/model/Transaction.java new file mode 100644 index 0000000000..5880b4248b --- /dev/null +++ b/students/812350401/src/main/java/com/coderising/myood/atmSimulation/model/Transaction.java @@ -0,0 +1,45 @@ +package com.coderising.myood.atmSimulation.model; + +import com.coderising.myood.atmSimulation.impl.ATM; + +/** + * Created by thomas_young on 30/7/2017. + * 该对象并不持有ATM的实例,它只是依赖ATM罢了 + */ +public abstract class Transaction { + private String account; + private String password; + + public Transaction(String account, String password) { + this.account = account; + this.password = password; + } + + public abstract boolean preProcess(ATM atm); + public abstract boolean postProcess(ATM atm); + public abstract String toNetworkPackage(); + + public String getAccount() { + return account; + } + + public void setAccount(String account) { + this.account = account; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + @Override + public String toString() { + return "Transaction{" + + "account='" + account + '\'' + + ", password='" + password + '\'' + + '}'; + } +} diff --git a/students/812350401/src/main/java/com/coderising/myood/atmSimulation/utils/SingletonScanner.java b/students/812350401/src/main/java/com/coderising/myood/atmSimulation/utils/SingletonScanner.java new file mode 100644 index 0000000000..249e9cb895 --- /dev/null +++ b/students/812350401/src/main/java/com/coderising/myood/atmSimulation/utils/SingletonScanner.java @@ -0,0 +1,18 @@ +package com.coderising.myood.atmSimulation.utils; + +import java.util.Scanner; + +/** + * Created by thomas_young on 30/7/2017. + * todo 不得已这么做,因为没法测试连续的控制台输入 + */ +public class SingletonScanner { + private static Scanner ourInstance = new Scanner(System.in); + + public static Scanner getInstance() { + return ourInstance; + } + + private SingletonScanner() { + } +} diff --git a/students/812350401/tests/com/coderising/myood/atmSimulation/impl/ATMTest.java b/students/812350401/tests/com/coderising/myood/atmSimulation/impl/ATMTest.java new file mode 100644 index 0000000000..8dae11554b --- /dev/null +++ b/students/812350401/tests/com/coderising/myood/atmSimulation/impl/ATMTest.java @@ -0,0 +1,34 @@ +package com.coderising.myood.atmSimulation.impl; + +import com.coderising.myood.atmSimulation.model.*; +import org.junit.Test; + +import static org.junit.Assert.*; + +/** + * Created by thomas_young on 30/7/2017. + */ +public class ATMTest { + private static ATM atm; + + static { + atm = new ATM(); + CardReader cardReader = new CardReaderImpl(); + SuperKeyPad superKeyPad = new SuperKeyPad(); + CashDispenser cashDispenser = new CashDispenserImpl(); + DepositSlot depositSlot = new DepositSlotImpl(); + Printer printer; + BankProxy bankProxy = new BankProxyImpl(); + atm.setBankProxy(bankProxy); + atm.setCardReader(cardReader); + atm.setCashDispenser(cashDispenser); + atm.setDepositSlot(depositSlot); + atm.setSuperKeyPad(superKeyPad); + } + + @Test + public void start() throws Exception { + atm.start(); + } + +} \ No newline at end of file diff --git a/students/812350401/tests/com/coderising/myood/atmSimulation/impl/BankProxyImplTest.java b/students/812350401/tests/com/coderising/myood/atmSimulation/impl/BankProxyImplTest.java new file mode 100644 index 0000000000..6fdfc3e91e --- /dev/null +++ b/students/812350401/tests/com/coderising/myood/atmSimulation/impl/BankProxyImplTest.java @@ -0,0 +1,31 @@ +package com.coderising.myood.atmSimulation.impl; + +import com.coderising.myood.atmSimulation.model.BankProxy; +import org.junit.Assert; +import org.junit.Test; + +import static org.junit.Assert.*; + +/** + * Created by thomas_young on 30/7/2017. + */ +public class BankProxyImplTest { + private static BankProxy bankProxy; + { + bankProxy = new BankProxyImpl(); + NetworkClient networkClient = new NetworkClient(); + bankProxy.setNetworkClient(networkClient); + } + @Test + public void verify() throws Exception { + Assert.assertFalse(bankProxy.verify("yangkai", "12345")); + Assert.assertFalse(bankProxy.verify(null, "12345")); + Assert.assertTrue(bankProxy.verify("yangkai", "123456")); + } + + @Test + public void process() throws Exception { + + } + +} \ No newline at end of file diff --git a/students/812350401/tests/com/coderising/myood/atmSimulation/impl/SuperKeyPadTest.java b/students/812350401/tests/com/coderising/myood/atmSimulation/impl/SuperKeyPadTest.java new file mode 100644 index 0000000000..94a9125dc6 --- /dev/null +++ b/students/812350401/tests/com/coderising/myood/atmSimulation/impl/SuperKeyPadTest.java @@ -0,0 +1,72 @@ +package com.coderising.myood.atmSimulation.impl; + +import com.coderising.myood.atmSimulation.model.Display; +import com.coderising.myood.atmSimulation.model.KeyBoard; +import com.coderising.myood.atmSimulation.model.Transaction; +import org.apache.commons.lang3.StringUtils; +import org.junit.Assert; +import org.junit.Ignore; +import org.junit.Test; + +import java.io.ByteArrayInputStream; +import java.io.InputStream; + +import static org.junit.Assert.*; + +/** + * Created by thomas_young on 30/7/2017. + */ +public class SuperKeyPadTest { + private SuperKeyPad superKeyPad; + { + superKeyPad = new SuperKeyPad(); + Display display = new DisplayImpl(); + KeyBoard keyBoard = new KeyBoardImpl(); + superKeyPad.setDisplay(display); + superKeyPad.setKeyBoard(keyBoard); + } + + @Test + public void testGetPassword() throws Exception { + String password = "123456"; + String output; + InputStream stdin = System.in; + try { + System.setIn(new ByteArrayInputStream(password.getBytes())); + output = superKeyPad.getPassword(); + } finally { + System.setIn(stdin); + } + Assert.assertEquals(password, output); + } + + @Test + public void testDisplayMessage() throws Exception { + superKeyPad.displayMessage("欢迎"); + } + + @Ignore + @Test + public void testGetTransaction() throws Exception { + + String lineSeparator = System.getProperty("line.separator"); + String trxInput = "X" + lineSeparator + "D" + lineSeparator + "xx" + lineSeparator + "190"; + + InputStream stdin = System.in; + Transaction transaction; + try { + System.setIn(new ByteArrayInputStream(trxInput.getBytes())); + transaction = superKeyPad.getTransaction("yangkai", "123456"); + } finally { + System.setIn(stdin); + } + System.out.println(transaction); + + // TODO: 30/7/2017 finally语句并不能使keyborad恢复到从console输入接收字符串,以后再说。因为源代码中流是不会变的 + //测试输入流有没有问题 +// KeyBoard keyBoard = new KeyBoardImpl(); +// String input = keyBoard.input(); +// System.out.println(input); + } + +} \ No newline at end of file diff --git a/students/812350401/tests/com/coderising/myood/atmSimulation/model/CardReaderTest.java b/students/812350401/tests/com/coderising/myood/atmSimulation/model/CardReaderTest.java new file mode 100644 index 0000000000..9c88dfa4d7 --- /dev/null +++ b/students/812350401/tests/com/coderising/myood/atmSimulation/model/CardReaderTest.java @@ -0,0 +1,33 @@ +package com.coderising.myood.atmSimulation.model; + +import com.coderising.myood.atmSimulation.impl.CardReaderImpl; +import com.coderising.myood.atmSimulation.model.CardReader; +import org.junit.Test; + +import static org.junit.Assert.*; + +/** + * Created by thomas_young on 30/7/2017. + */ +public class CardReaderTest { + CardReader cardReader = new CardReaderImpl(); + @Test + public void getAccount() throws Exception { + String account; + while(true) { + account = cardReader.getAccount(); + if(account != null) { + System.out.println("读卡成功,卡号是"+account); + break; + } + System.out.println("读卡失败"); + } + cardReader.ejectCard(); + } + + @Test + public void ejectCard() throws Exception { + cardReader.ejectCard(); + } + +} \ No newline at end of file diff --git a/students/812350401/tests/com/coderising/myood/atmSimulation/model/DisplayTest.java b/students/812350401/tests/com/coderising/myood/atmSimulation/model/DisplayTest.java new file mode 100644 index 0000000000..5bc7779d86 --- /dev/null +++ b/students/812350401/tests/com/coderising/myood/atmSimulation/model/DisplayTest.java @@ -0,0 +1,23 @@ +package com.coderising.myood.atmSimulation.model; + +import com.coderising.myood.atmSimulation.impl.DisplayImpl; +import org.junit.Test; + +import static org.junit.Assert.*; + +/** + * Created by thomas_young on 30/7/2017. + */ +public class DisplayTest { + private static Display display = new DisplayImpl(); + @Test + public void outputPlainText() throws Exception { + display.outputPlainText("欢迎你!"); + } + + @Test + public void outputEncryptedText() throws Exception { + display.outputEncryptedText("345677"); + } + +} \ No newline at end of file diff --git a/students/812350401/tests/com/coderising/myood/atmSimulation/model/KeyBoardTest.java b/students/812350401/tests/com/coderising/myood/atmSimulation/model/KeyBoardTest.java new file mode 100644 index 0000000000..151ff5178d --- /dev/null +++ b/students/812350401/tests/com/coderising/myood/atmSimulation/model/KeyBoardTest.java @@ -0,0 +1,29 @@ +package com.coderising.myood.atmSimulation.model; + +import com.coderising.myood.atmSimulation.impl.KeyBoardImpl; +import org.junit.Test; + +import java.io.ByteArrayInputStream; +import java.io.InputStream; + +/** + * Created by thomas_young on 30/7/2017. + */ +public class KeyBoardTest { + KeyBoard keyBoard = new KeyBoardImpl(); + + @Test + public void testInput() throws Exception { + String data = "Hello, World!\r\n"; + String input; + InputStream stdin = System.in; + try { + System.setIn(new ByteArrayInputStream(data.getBytes())); + input = keyBoard.input(); + } finally { + System.setIn(stdin); + } + System.out.println("input is----" + input); + } + +} \ No newline at end of file diff --git a/students/812350401/tests/com/coderising/myood/atmSimulation/model/TransactionTest.java b/students/812350401/tests/com/coderising/myood/atmSimulation/model/TransactionTest.java new file mode 100644 index 0000000000..c8efb805f7 --- /dev/null +++ b/students/812350401/tests/com/coderising/myood/atmSimulation/model/TransactionTest.java @@ -0,0 +1,54 @@ +package com.coderising.myood.atmSimulation.model; + +import com.coderising.myood.atmSimulation.impl.*; +import org.junit.Test; + +import static org.junit.Assert.*; + +/** + * Created by thomas_young on 30/7/2017. + */ +public class TransactionTest { + private static Transaction withdrawTrx; + private static Transaction noMoneyWithdrawTrx; + private static Transaction depositTrx; + private static ATM atm; + + static { + atm = new ATM(); + withdrawTrx = new WithdrawTransaction("withdraw", "1023", 100d); + noMoneyWithdrawTrx = new WithdrawTransaction("withdraw", "1023", 10001d); + depositTrx = new DepositTransaction("deposit", "456", 200d); + CardReader cardReader = new CardReaderImpl(); + SuperKeyPad superKeyPad = new SuperKeyPad(); + CashDispenser cashDispenser = new CashDispenserImpl(); + DepositSlot depositSlot = new DepositSlotImpl(); + Printer printer; + BankProxy bankProxy = new BankProxyImpl(); + atm.setBankProxy(bankProxy); + atm.setCardReader(cardReader); + atm.setCashDispenser(cashDispenser); + atm.setDepositSlot(depositSlot); + atm.setSuperKeyPad(superKeyPad); + } + + @Test + public void preProcess() throws Exception { + assertTrue(withdrawTrx.preProcess(atm)); + assertFalse(noMoneyWithdrawTrx.preProcess(atm)); + depositTrx.preProcess(atm); + assertEquals((Double)(((DepositTransaction)depositTrx).getAmount()-5d), ((DepositTransaction)depositTrx).getActualAmount()); + } + + @Test + public void postProcess() throws Exception { + assertTrue(withdrawTrx.postProcess(atm)); + depositTrx.postProcess(atm); + } + + @Test + public void toNetworkPackage() throws Exception { + + } + +} \ No newline at end of file From fe51642fc54c3a772d57f39cfb8f51da3d8c9f8e Mon Sep 17 00:00:00 2001 From: Thomas Young Date: Sun, 30 Jul 2017 21:48:54 +0800 Subject: [PATCH 07/13] =?UTF-8?q?[Feature]=20ATM=E5=8F=96=E6=AC=BE?= =?UTF-8?q?=E6=9C=BA=EF=BC=8C=E5=AE=8C=E6=88=90=E5=8F=96=E6=AC=BE=E5=92=8C?= =?UTF-8?q?=E5=AD=98=E6=AC=BE2=E4=B8=AA=E4=BA=A4=E6=98=93=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/coderising/myood/atmSimulation/impl/ATM.java | 9 +++++---- .../myood/atmSimulation/impl/CardReaderImpl.java | 2 +- .../myood/atmSimulation/impl/DepositTransaction.java | 4 ++-- .../myood/atmSimulation/impl/SuperKeyPad.java | 10 +++++++--- .../coderising/myood/atmSimulation/impl/ATMTest.java | 10 +++++++--- .../myood/atmSimulation/impl/BankProxyImplTest.java | 0 .../myood/atmSimulation/impl/SuperKeyPadTest.java | 0 .../myood/atmSimulation/model/CardReaderTest.java | 0 .../myood/atmSimulation/model/DisplayTest.java | 0 .../myood/atmSimulation/model/KeyBoardTest.java | 1 - .../myood/atmSimulation/model/TransactionTest.java | 0 11 files changed, 22 insertions(+), 14 deletions(-) rename students/812350401/{tests => src/test}/com/coderising/myood/atmSimulation/impl/ATMTest.java (71%) rename students/812350401/{tests => src/test}/com/coderising/myood/atmSimulation/impl/BankProxyImplTest.java (100%) rename students/812350401/{tests => src/test}/com/coderising/myood/atmSimulation/impl/SuperKeyPadTest.java (100%) rename students/812350401/{tests => src/test}/com/coderising/myood/atmSimulation/model/CardReaderTest.java (100%) rename students/812350401/{tests => src/test}/com/coderising/myood/atmSimulation/model/DisplayTest.java (100%) rename students/812350401/{tests => src/test}/com/coderising/myood/atmSimulation/model/KeyBoardTest.java (99%) rename students/812350401/{tests => src/test}/com/coderising/myood/atmSimulation/model/TransactionTest.java (100%) diff --git a/students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/ATM.java b/students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/ATM.java index dd51fcae73..7294083441 100644 --- a/students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/ATM.java +++ b/students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/ATM.java @@ -58,16 +58,17 @@ public void start() { // step2. 读取密码,并做校验 int failedCount = 0; - boolean verfied = false; + boolean verified = false; String password = null; while (failedCount < 3) { password = superKeyPad.getPassword(); - verfied = bankProxy.verify(account, password); - if (verfied) { + verified = bankProxy.verify(account, password); + if (verified) { break; } + failedCount++; } - if (!verfied) { + if (!verified) { System.out.println("输错密码超过3次"); cardReader.eatCard(); return; diff --git a/students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/CardReaderImpl.java b/students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/CardReaderImpl.java index bdc62a8ffc..5cd59b67d4 100644 --- a/students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/CardReaderImpl.java +++ b/students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/CardReaderImpl.java @@ -16,7 +16,7 @@ public String getAccount() { retryTimes++; return null; } - return "123456"; + return "yangkaiAccount"; } @Override diff --git a/students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/DepositTransaction.java b/students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/DepositTransaction.java index ad2679a8c5..705a01fba5 100644 --- a/students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/DepositTransaction.java +++ b/students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/DepositTransaction.java @@ -30,7 +30,7 @@ public boolean preProcess(ATM atm) { @Override public boolean postProcess(ATM atm) { // TODO: 30/7/2017 只是为了调试,建议删除 - System.out.printf("存款postProcess: 什么都不做"); + System.out.println("存款postProcess: 什么都不做"); return true; } @@ -42,7 +42,7 @@ public String toNetworkPackage() { @Override public String toString() { return super.toString() + " DepositTransaction{" + - "amount=" + amount + + "amount=" + amount + ", actualAmount=" + actualAmount + '}'; } diff --git a/students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/SuperKeyPad.java b/students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/SuperKeyPad.java index befc2fb46b..fb5da93cd8 100644 --- a/students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/SuperKeyPad.java +++ b/students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/SuperKeyPad.java @@ -30,9 +30,9 @@ public void displayMessage(String message) { public Transaction getTransaction(String account, String password) { display.outputPlainText("请输入交易类型:"); - display.outputPlainText("W: 取款"); - display.outputPlainText("D: 存款"); - display.outputPlainText("T: 转账"); + display.outputPlainText("W: 取款, "); + display.outputPlainText("D: 存款, "); + display.outputPlainText("T: 转账, "); display.outputPlainText("B: 查询余额"); while(true) { String input = keyBoard.input(); @@ -77,6 +77,8 @@ private Transaction getDepositTrx(String account, String password) { } } + public Transaction + public void setDisplay(Display display) { this.display = display; } @@ -94,5 +96,7 @@ public static void main(String[] args) { Transaction transaction = superKeyPad.getTransaction("yangkai", "123456"); System.out.println(transaction); + String password = superKeyPad.getPassword(); + System.out.println(password); } } diff --git a/students/812350401/tests/com/coderising/myood/atmSimulation/impl/ATMTest.java b/students/812350401/src/test/com/coderising/myood/atmSimulation/impl/ATMTest.java similarity index 71% rename from students/812350401/tests/com/coderising/myood/atmSimulation/impl/ATMTest.java rename to students/812350401/src/test/com/coderising/myood/atmSimulation/impl/ATMTest.java index 8dae11554b..408d70d68c 100644 --- a/students/812350401/tests/com/coderising/myood/atmSimulation/impl/ATMTest.java +++ b/students/812350401/src/test/com/coderising/myood/atmSimulation/impl/ATMTest.java @@ -15,10 +15,16 @@ public class ATMTest { atm = new ATM(); CardReader cardReader = new CardReaderImpl(); SuperKeyPad superKeyPad = new SuperKeyPad(); + KeyBoard keyBoard = new KeyBoardImpl(); + Display display = new DisplayImpl(); + superKeyPad.setDisplay(display); + superKeyPad.setKeyBoard(keyBoard); CashDispenser cashDispenser = new CashDispenserImpl(); DepositSlot depositSlot = new DepositSlotImpl(); Printer printer; BankProxy bankProxy = new BankProxyImpl(); + NetworkClient networkClient = new NetworkClient(); + bankProxy.setNetworkClient(networkClient); atm.setBankProxy(bankProxy); atm.setCardReader(cardReader); atm.setCashDispenser(cashDispenser); @@ -26,9 +32,7 @@ public class ATMTest { atm.setSuperKeyPad(superKeyPad); } - @Test - public void start() throws Exception { + public static void main(String[] args) { atm.start(); } - } \ No newline at end of file diff --git a/students/812350401/tests/com/coderising/myood/atmSimulation/impl/BankProxyImplTest.java b/students/812350401/src/test/com/coderising/myood/atmSimulation/impl/BankProxyImplTest.java similarity index 100% rename from students/812350401/tests/com/coderising/myood/atmSimulation/impl/BankProxyImplTest.java rename to students/812350401/src/test/com/coderising/myood/atmSimulation/impl/BankProxyImplTest.java diff --git a/students/812350401/tests/com/coderising/myood/atmSimulation/impl/SuperKeyPadTest.java b/students/812350401/src/test/com/coderising/myood/atmSimulation/impl/SuperKeyPadTest.java similarity index 100% rename from students/812350401/tests/com/coderising/myood/atmSimulation/impl/SuperKeyPadTest.java rename to students/812350401/src/test/com/coderising/myood/atmSimulation/impl/SuperKeyPadTest.java diff --git a/students/812350401/tests/com/coderising/myood/atmSimulation/model/CardReaderTest.java b/students/812350401/src/test/com/coderising/myood/atmSimulation/model/CardReaderTest.java similarity index 100% rename from students/812350401/tests/com/coderising/myood/atmSimulation/model/CardReaderTest.java rename to students/812350401/src/test/com/coderising/myood/atmSimulation/model/CardReaderTest.java diff --git a/students/812350401/tests/com/coderising/myood/atmSimulation/model/DisplayTest.java b/students/812350401/src/test/com/coderising/myood/atmSimulation/model/DisplayTest.java similarity index 100% rename from students/812350401/tests/com/coderising/myood/atmSimulation/model/DisplayTest.java rename to students/812350401/src/test/com/coderising/myood/atmSimulation/model/DisplayTest.java diff --git a/students/812350401/tests/com/coderising/myood/atmSimulation/model/KeyBoardTest.java b/students/812350401/src/test/com/coderising/myood/atmSimulation/model/KeyBoardTest.java similarity index 99% rename from students/812350401/tests/com/coderising/myood/atmSimulation/model/KeyBoardTest.java rename to students/812350401/src/test/com/coderising/myood/atmSimulation/model/KeyBoardTest.java index 151ff5178d..652aabcf3a 100644 --- a/students/812350401/tests/com/coderising/myood/atmSimulation/model/KeyBoardTest.java +++ b/students/812350401/src/test/com/coderising/myood/atmSimulation/model/KeyBoardTest.java @@ -25,5 +25,4 @@ public void testInput() throws Exception { } System.out.println("input is----" + input); } - } \ No newline at end of file diff --git a/students/812350401/tests/com/coderising/myood/atmSimulation/model/TransactionTest.java b/students/812350401/src/test/com/coderising/myood/atmSimulation/model/TransactionTest.java similarity index 100% rename from students/812350401/tests/com/coderising/myood/atmSimulation/model/TransactionTest.java rename to students/812350401/src/test/com/coderising/myood/atmSimulation/model/TransactionTest.java From b97e05e397d2ce4c4fae390e71689b52b8122fef Mon Sep 17 00:00:00 2001 From: Thomas Young Date: Sun, 30 Jul 2017 22:48:00 +0800 Subject: [PATCH 08/13] =?UTF-8?q?[Feature]=20ATM=E5=AE=9E=E7=8E=B02?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 完成测试用例和README的修改 2. 完成查询和转账 注: 缺乏和银行的逻辑,比如查询银行应该返回一个查询金额。 而我目前所有的交易都只是返回成功或失败,应该有一个类包装返回值 --- .../coderising/myood/atmSimulation/README.md | 12 +++++ .../myood/atmSimulation/impl/ATM.java | 1 + .../atmSimulation/impl/QueryTransaction.java | 29 ++++++++++++ .../myood/atmSimulation/impl/SuperKeyPad.java | 31 ++++++++++--- .../impl/TransferTransaction.java | 44 +++++++++++++++++++ 5 files changed, 112 insertions(+), 5 deletions(-) create mode 100644 students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/QueryTransaction.java create mode 100644 students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/TransferTransaction.java diff --git a/students/812350401/src/main/java/com/coderising/myood/atmSimulation/README.md b/students/812350401/src/main/java/com/coderising/myood/atmSimulation/README.md index 0353e9cc41..50f8c65813 100644 --- a/students/812350401/src/main/java/com/coderising/myood/atmSimulation/README.md +++ b/students/812350401/src/main/java/com/coderising/myood/atmSimulation/README.md @@ -23,3 +23,15 @@ https://github.com/onlyliuxin/coding2017/pull/512 所有的交易都是ATM和银行服务器合作完成的,银行保留了账户信息,必须在合适的时候向银行查询这些信息 这里其实是两个系统, 一个运行在ATM上,另外一个在银行端 + +### 请在com.coderising.myood.atmSimulation.impl.ATMTest的main函数处进行测试 +需要测试的场景: +输入密码错误:不是123456 +输入密码正确:是123456 +取款,取款金额>10000元 +存款,存款金额<5元 +存款,取款金额<10000元,正常存款 +取款,存款金额>5元,正常取现 +查询 +转账 + diff --git a/students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/ATM.java b/students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/ATM.java index 7294083441..9d55be57ef 100644 --- a/students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/ATM.java +++ b/students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/ATM.java @@ -78,6 +78,7 @@ public void start() { Transaction transaction = superKeyPad.getTransaction(account, password); boolean valid = transaction.preProcess(this); if (!valid) { + cardReader.ejectCard(); return; } boolean success = bankProxy.process(transaction); diff --git a/students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/QueryTransaction.java b/students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/QueryTransaction.java new file mode 100644 index 0000000000..e7f7d39430 --- /dev/null +++ b/students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/QueryTransaction.java @@ -0,0 +1,29 @@ +package com.coderising.myood.atmSimulation.impl; + +import com.coderising.myood.atmSimulation.model.Transaction; + +/** + * Created by thomas_young on 30/7/2017. + */ +public class QueryTransaction extends Transaction { + public QueryTransaction(String account, String password) { + super(account, password); + } + + @Override + public boolean preProcess(ATM atm) { + System.out.println("查询:不做前处理"); + return true; + } + + @Override + public boolean postProcess(ATM atm) { + System.out.println("查询:不做后处理"); + return true; + } + + @Override + public String toNetworkPackage() { + return null; + } +} diff --git a/students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/SuperKeyPad.java b/students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/SuperKeyPad.java index fb5da93cd8..b0d57463eb 100644 --- a/students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/SuperKeyPad.java +++ b/students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/SuperKeyPad.java @@ -33,7 +33,7 @@ public Transaction getTransaction(String account, String password) { display.outputPlainText("W: 取款, "); display.outputPlainText("D: 存款, "); display.outputPlainText("T: 转账, "); - display.outputPlainText("B: 查询余额"); + display.outputPlainText("Q: 查询余额"); while(true) { String input = keyBoard.input(); switch (input) { @@ -42,9 +42,9 @@ public Transaction getTransaction(String account, String password) { case "D": return getDepositTrx(account, password); case "T": - return null; - case "B": - return null; + return getTransferTrx(account, password); + case "Q": + return getQueryTrx(account, password); default: System.out.printf("输入有误,请重新输入"); } @@ -77,7 +77,28 @@ private Transaction getDepositTrx(String account, String password) { } } - public Transaction + private Transaction getTransferTrx(String account, String password) { + while(true) { + display.outputPlainText("请输入对方账户:"); + String counterAccount = keyBoard.input(); + if ("".equals(counterAccount)) { + System.out.printf("输入账户有误,请重新输入"); + continue; + } + display.outputPlainText("请输入转账金额:"); + String input = keyBoard.input(); + try { + Double amount = Double.valueOf(input); + return new TransferTransaction(account, password, amount, counterAccount); + } catch (NumberFormatException e) { + System.out.printf("格式有误,请重新输入"); + } + } + } + + private Transaction getQueryTrx(String account, String password) { + return new QueryTransaction(account, password); + } public void setDisplay(Display display) { this.display = display; diff --git a/students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/TransferTransaction.java b/students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/TransferTransaction.java new file mode 100644 index 0000000000..d34e00b664 --- /dev/null +++ b/students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/TransferTransaction.java @@ -0,0 +1,44 @@ +package com.coderising.myood.atmSimulation.impl; + +import com.coderising.myood.atmSimulation.model.Transaction; + +/** + * Created by thomas_young on 30/7/2017. + */ +public class TransferTransaction extends Transaction { + // 转账金额 + private Double amount; + // 对方账户 + private String counterAccount; + + public TransferTransaction(String account, String password, Double amount, String counterAccount) { + super(account, password); + this.amount = amount; + this.counterAccount = counterAccount; + } + + @Override + public boolean preProcess(ATM atm) { + System.out.println("转账: 不做前处理"); + return true; + } + + @Override + public boolean postProcess(ATM atm) { + System.out.println("转账: 不做后处理"); + return true; + } + + @Override + public String toNetworkPackage() { + return null; + } + + @Override + public String toString() { + return super.toString() + " TransferTransaction{" + + "amount=" + amount + + ", counterAccount='" + counterAccount + '\'' + + '}'; + } +} From e4590f3e4661c33f9d2a1cb30844b9acc9f62187 Mon Sep 17 00:00:00 2001 From: Thomas Young Date: Sun, 30 Jul 2017 23:02:00 +0800 Subject: [PATCH 09/13] =?UTF-8?q?[Fix]:=20=E4=BF=AE=E6=94=B9=E8=8B=A5?= =?UTF-8?q?=E5=B9=B2=E6=B5=8B=E8=AF=95=E7=94=A8=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 废止用Scanner的单例模式 --- .../coderising/myood/atmSimulation/impl/KeyBoardImpl.java | 4 +++- .../myood/atmSimulation/utils/SingletonScanner.java | 2 +- .../myood/atmSimulation/impl/SuperKeyPadTest.java | 6 ------ .../coderising/myood/atmSimulation/model/KeyBoardTest.java | 5 +++++ 4 files changed, 9 insertions(+), 8 deletions(-) diff --git a/students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/KeyBoardImpl.java b/students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/KeyBoardImpl.java index 15ad2aaf31..df98335a78 100644 --- a/students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/KeyBoardImpl.java +++ b/students/812350401/src/main/java/com/coderising/myood/atmSimulation/impl/KeyBoardImpl.java @@ -11,7 +11,9 @@ public class KeyBoardImpl implements KeyBoard { @Override public String input() { - Scanner sc = SingletonScanner.getInstance(); + // TODO: 30/7/2017 强烈建议改成正常的方式,否则后患无穷,现在已经有测试用例跑不过了 +// Scanner sc = SingletonScanner.getInstance(); + Scanner sc = new Scanner(System.in); String input = sc.nextLine(); return input; } diff --git a/students/812350401/src/main/java/com/coderising/myood/atmSimulation/utils/SingletonScanner.java b/students/812350401/src/main/java/com/coderising/myood/atmSimulation/utils/SingletonScanner.java index 249e9cb895..3fc5002dca 100644 --- a/students/812350401/src/main/java/com/coderising/myood/atmSimulation/utils/SingletonScanner.java +++ b/students/812350401/src/main/java/com/coderising/myood/atmSimulation/utils/SingletonScanner.java @@ -4,7 +4,7 @@ /** * Created by thomas_young on 30/7/2017. - * todo 不得已这么做,因为没法测试连续的控制台输入 + * todo 不得已这么做,因为没法测试连续的控制台输入,强烈建议删除 */ public class SingletonScanner { private static Scanner ourInstance = new Scanner(System.in); diff --git a/students/812350401/src/test/com/coderising/myood/atmSimulation/impl/SuperKeyPadTest.java b/students/812350401/src/test/com/coderising/myood/atmSimulation/impl/SuperKeyPadTest.java index 94a9125dc6..455c721402 100644 --- a/students/812350401/src/test/com/coderising/myood/atmSimulation/impl/SuperKeyPadTest.java +++ b/students/812350401/src/test/com/coderising/myood/atmSimulation/impl/SuperKeyPadTest.java @@ -61,12 +61,6 @@ public void testGetTransaction() throws Exception { System.setIn(stdin); } System.out.println(transaction); - - // TODO: 30/7/2017 finally语句并不能使keyborad恢复到从console输入接收字符串,以后再说。因为源代码中流是不会变的 - //测试输入流有没有问题 -// KeyBoard keyBoard = new KeyBoardImpl(); -// String input = keyBoard.input(); -// System.out.println(input); } } \ No newline at end of file diff --git a/students/812350401/src/test/com/coderising/myood/atmSimulation/model/KeyBoardTest.java b/students/812350401/src/test/com/coderising/myood/atmSimulation/model/KeyBoardTest.java index 652aabcf3a..7c732d0786 100644 --- a/students/812350401/src/test/com/coderising/myood/atmSimulation/model/KeyBoardTest.java +++ b/students/812350401/src/test/com/coderising/myood/atmSimulation/model/KeyBoardTest.java @@ -1,6 +1,7 @@ package com.coderising.myood.atmSimulation.model; import com.coderising.myood.atmSimulation.impl.KeyBoardImpl; +import org.junit.Ignore; import org.junit.Test; import java.io.ByteArrayInputStream; @@ -24,5 +25,9 @@ public void testInput() throws Exception { System.setIn(stdin); } System.out.println("input is----" + input); + + System.setIn(new ByteArrayInputStream("haha\n".getBytes())); + input = keyBoard.input(); + System.out.println(input); } } \ No newline at end of file From 30d4ab385bd80a442465a6551ffca71ffea0fc72 Mon Sep 17 00:00:00 2001 From: sheng <1158154002@qq.com> Date: Wed, 2 Aug 2017 08:02:02 +0800 Subject: [PATCH 10/13] dp --- .../java/com/coderising/dp/bridge/Circle.java | 12 +++ .../com/coderising/dp/bridge/Drawing.java | 6 ++ .../com/coderising/dp/bridge/DrawingGL1.java | 15 ++++ .../com/coderising/dp/bridge/DrawingGL2.java | 15 ++++ .../com/coderising/dp/bridge/Rectangle.java | 11 +++ .../java/com/coderising/dp/bridge/Shape.java | 12 +++ .../java/com/coderising/dp/bridge/Test.java | 16 ++++ .../com/coderising/dp/composite/Line.java | 11 +++ .../com/coderising/dp/composite/Picture.java | 33 ++++++++ .../coderising/dp/composite/Rectangle.java | 10 +++ .../com/coderising/dp/composite/Shape.java | 5 ++ .../com/coderising/dp/composite/Square.java | 10 +++ .../com/coderising/dp/composite/Text.java | 10 +++ .../com/coderising/dp/decorator/Email.java | 5 ++ .../coderising/dp/decorator/EmailImpl.java | 14 ++++ .../coderising/dp/decorator/EmailProxy.java | 29 +++++++ .../com/coderising/dp/decorator/Encrypt.java | 76 +++++++++++++++++++ 17 files changed, 290 insertions(+) create mode 100644 students/1158154002/src/main/java/com/coderising/dp/bridge/Circle.java create mode 100644 students/1158154002/src/main/java/com/coderising/dp/bridge/Drawing.java create mode 100644 students/1158154002/src/main/java/com/coderising/dp/bridge/DrawingGL1.java create mode 100644 students/1158154002/src/main/java/com/coderising/dp/bridge/DrawingGL2.java create mode 100644 students/1158154002/src/main/java/com/coderising/dp/bridge/Rectangle.java create mode 100644 students/1158154002/src/main/java/com/coderising/dp/bridge/Shape.java create mode 100644 students/1158154002/src/main/java/com/coderising/dp/bridge/Test.java create mode 100644 students/1158154002/src/main/java/com/coderising/dp/composite/Line.java create mode 100644 students/1158154002/src/main/java/com/coderising/dp/composite/Picture.java create mode 100644 students/1158154002/src/main/java/com/coderising/dp/composite/Rectangle.java create mode 100644 students/1158154002/src/main/java/com/coderising/dp/composite/Shape.java create mode 100644 students/1158154002/src/main/java/com/coderising/dp/composite/Square.java create mode 100644 students/1158154002/src/main/java/com/coderising/dp/composite/Text.java create mode 100644 students/1158154002/src/main/java/com/coderising/dp/decorator/Email.java create mode 100644 students/1158154002/src/main/java/com/coderising/dp/decorator/EmailImpl.java create mode 100644 students/1158154002/src/main/java/com/coderising/dp/decorator/EmailProxy.java create mode 100644 students/1158154002/src/main/java/com/coderising/dp/decorator/Encrypt.java diff --git a/students/1158154002/src/main/java/com/coderising/dp/bridge/Circle.java b/students/1158154002/src/main/java/com/coderising/dp/bridge/Circle.java new file mode 100644 index 0000000000..39483dabb9 --- /dev/null +++ b/students/1158154002/src/main/java/com/coderising/dp/bridge/Circle.java @@ -0,0 +1,12 @@ +package com.coderising.dp.bridge; + +public class Circle extends Shape { + + @Override + public void draw() { + super.getDrawing().drawCircle(); + System.out.println("I'm a Line"); + + } + +} \ No newline at end of file diff --git a/students/1158154002/src/main/java/com/coderising/dp/bridge/Drawing.java b/students/1158154002/src/main/java/com/coderising/dp/bridge/Drawing.java new file mode 100644 index 0000000000..97ad4b2378 --- /dev/null +++ b/students/1158154002/src/main/java/com/coderising/dp/bridge/Drawing.java @@ -0,0 +1,6 @@ +package com.coderising.dp.bridge; + +public interface Drawing { +void drawLine(); +void drawCircle(); +} diff --git a/students/1158154002/src/main/java/com/coderising/dp/bridge/DrawingGL1.java b/students/1158154002/src/main/java/com/coderising/dp/bridge/DrawingGL1.java new file mode 100644 index 0000000000..c1addd2658 --- /dev/null +++ b/students/1158154002/src/main/java/com/coderising/dp/bridge/DrawingGL1.java @@ -0,0 +1,15 @@ +package com.coderising.dp.bridge; + +public class DrawingGL1 implements Drawing{ + + @Override + public void drawLine() { + System.out.println("DrawingGL1.drawLine"); + } + + @Override + public void drawCircle() { + System.out.println("DrawingGL1.drawCircle"); + } + +} diff --git a/students/1158154002/src/main/java/com/coderising/dp/bridge/DrawingGL2.java b/students/1158154002/src/main/java/com/coderising/dp/bridge/DrawingGL2.java new file mode 100644 index 0000000000..b30a86d053 --- /dev/null +++ b/students/1158154002/src/main/java/com/coderising/dp/bridge/DrawingGL2.java @@ -0,0 +1,15 @@ +package com.coderising.dp.bridge; + +public class DrawingGL2 implements Drawing{ + + @Override + public void drawLine() { + System.out.println("DrawingGL2.drawLine"); + } + + @Override + public void drawCircle() { + System.out.println("DrawingGL2.drawCircle"); + } + +} diff --git a/students/1158154002/src/main/java/com/coderising/dp/bridge/Rectangle.java b/students/1158154002/src/main/java/com/coderising/dp/bridge/Rectangle.java new file mode 100644 index 0000000000..ab4f171f96 --- /dev/null +++ b/students/1158154002/src/main/java/com/coderising/dp/bridge/Rectangle.java @@ -0,0 +1,11 @@ +package com.coderising.dp.bridge; + +public class Rectangle extends Shape { + + @Override + public void draw() { + super.getDrawing().drawLine(); + System.out.println("I'm a Rectangle"); + } + +} \ No newline at end of file diff --git a/students/1158154002/src/main/java/com/coderising/dp/bridge/Shape.java b/students/1158154002/src/main/java/com/coderising/dp/bridge/Shape.java new file mode 100644 index 0000000000..f317e344d4 --- /dev/null +++ b/students/1158154002/src/main/java/com/coderising/dp/bridge/Shape.java @@ -0,0 +1,12 @@ +package com.coderising.dp.bridge; + +public abstract class Shape { + public Drawing drawing; + public Drawing getDrawing() { + return drawing; + } + public void setDrawing(Drawing drawing) { + this.drawing = drawing; + } + public abstract void draw(); +} diff --git a/students/1158154002/src/main/java/com/coderising/dp/bridge/Test.java b/students/1158154002/src/main/java/com/coderising/dp/bridge/Test.java new file mode 100644 index 0000000000..3aceb7fe89 --- /dev/null +++ b/students/1158154002/src/main/java/com/coderising/dp/bridge/Test.java @@ -0,0 +1,16 @@ +package com.coderising.dp.bridge; + +public class Test { + + public static void main(String[] args) { + Shape rectangel=new Rectangle(); + rectangel.setDrawing(new DrawingGL1()); + rectangel.draw(); + + + Shape circle=new Circle(); + circle.setDrawing(new DrawingGL2()); + circle.draw(); + } + +} diff --git a/students/1158154002/src/main/java/com/coderising/dp/composite/Line.java b/students/1158154002/src/main/java/com/coderising/dp/composite/Line.java new file mode 100644 index 0000000000..411eb80876 --- /dev/null +++ b/students/1158154002/src/main/java/com/coderising/dp/composite/Line.java @@ -0,0 +1,11 @@ +package com.coderising.dp.composite; + +public class Line implements Shape { + + @Override + public void draw() { + System.out.println("I'm a Line"); + + } + +} \ No newline at end of file diff --git a/students/1158154002/src/main/java/com/coderising/dp/composite/Picture.java b/students/1158154002/src/main/java/com/coderising/dp/composite/Picture.java new file mode 100644 index 0000000000..b52ac69ae2 --- /dev/null +++ b/students/1158154002/src/main/java/com/coderising/dp/composite/Picture.java @@ -0,0 +1,33 @@ +package com.coderising.dp.composite; + +import java.util.ArrayList; +import java.util.List; + +public class Picture implements Shape{ + private List shapes=new ArrayList<>(); + @Override + public void draw() { + for (Shape shape : shapes) { + shape.draw(); + } + } + + public void add(Shape shape){ + shapes.add(shape); + } + + public static void main(String[] args) { + Picture aPicture=new Picture(); + aPicture.add(new Line()); + aPicture.add(new Rectangle()); + + Picture a=new Picture(); + a.add(new Text()); + a.add(new Line()); + a.add(new Square()); + aPicture.add(a); + + aPicture.draw(); + } + +} diff --git a/students/1158154002/src/main/java/com/coderising/dp/composite/Rectangle.java b/students/1158154002/src/main/java/com/coderising/dp/composite/Rectangle.java new file mode 100644 index 0000000000..9547cd7aa9 --- /dev/null +++ b/students/1158154002/src/main/java/com/coderising/dp/composite/Rectangle.java @@ -0,0 +1,10 @@ +package com.coderising.dp.composite; + +public class Rectangle implements Shape { + + @Override + public void draw() { + System.out.println("I'm a Rectangle"); + } + +} \ No newline at end of file diff --git a/students/1158154002/src/main/java/com/coderising/dp/composite/Shape.java b/students/1158154002/src/main/java/com/coderising/dp/composite/Shape.java new file mode 100644 index 0000000000..45c428c6b9 --- /dev/null +++ b/students/1158154002/src/main/java/com/coderising/dp/composite/Shape.java @@ -0,0 +1,5 @@ +package com.coderising.dp.composite; + +public interface Shape { + public void draw(); +} diff --git a/students/1158154002/src/main/java/com/coderising/dp/composite/Square.java b/students/1158154002/src/main/java/com/coderising/dp/composite/Square.java new file mode 100644 index 0000000000..50b94ca09d --- /dev/null +++ b/students/1158154002/src/main/java/com/coderising/dp/composite/Square.java @@ -0,0 +1,10 @@ +package com.coderising.dp.composite; + +public class Square implements Shape { + + @Override + public void draw() { + System.out.println("I'm a Square"); + } + +} diff --git a/students/1158154002/src/main/java/com/coderising/dp/composite/Text.java b/students/1158154002/src/main/java/com/coderising/dp/composite/Text.java new file mode 100644 index 0000000000..db0268f18a --- /dev/null +++ b/students/1158154002/src/main/java/com/coderising/dp/composite/Text.java @@ -0,0 +1,10 @@ +package com.coderising.dp.composite; + +public class Text implements Shape { + + @Override + public void draw() { + System.out.println("I'm a Text"); + } + +} \ No newline at end of file diff --git a/students/1158154002/src/main/java/com/coderising/dp/decorator/Email.java b/students/1158154002/src/main/java/com/coderising/dp/decorator/Email.java new file mode 100644 index 0000000000..50ce116777 --- /dev/null +++ b/students/1158154002/src/main/java/com/coderising/dp/decorator/Email.java @@ -0,0 +1,5 @@ +package com.coderising.dp.decorator; + +public interface Email { + public String getContent(); +} diff --git a/students/1158154002/src/main/java/com/coderising/dp/decorator/EmailImpl.java b/students/1158154002/src/main/java/com/coderising/dp/decorator/EmailImpl.java new file mode 100644 index 0000000000..7ce815ca35 --- /dev/null +++ b/students/1158154002/src/main/java/com/coderising/dp/decorator/EmailImpl.java @@ -0,0 +1,14 @@ +package com.coderising.dp.decorator; + +public class EmailImpl implements Email{ + private String content; + + public EmailImpl(String content) { + this.content = content; + } + + @Override + public String getContent() { + return content; + } +} diff --git a/students/1158154002/src/main/java/com/coderising/dp/decorator/EmailProxy.java b/students/1158154002/src/main/java/com/coderising/dp/decorator/EmailProxy.java new file mode 100644 index 0000000000..344459a35f --- /dev/null +++ b/students/1158154002/src/main/java/com/coderising/dp/decorator/EmailProxy.java @@ -0,0 +1,29 @@ +package com.coderising.dp.decorator; + +public class EmailProxy implements Email{ + Email email; + + @Override + public String getContent() { + String content=email.getContent()+"\n本邮件仅为个人观点,并不代表公司立场"; + System.out.println(content); + content=Encrypt.SHA256(content); + System.out.println(content); + return content; + } + + public void setEmail(Email email) { + this.email = email; + } + + public static void main(String[] args) { + EmailImpl email=new EmailImpl("hello world!"); + EmailProxy proxy=new EmailProxy(); + EmailProxy proxy1=new EmailProxy(); + proxy.setEmail(email); + // proxy.getContent(); + proxy1.setEmail(proxy); + proxy1.getContent(); + } + +} diff --git a/students/1158154002/src/main/java/com/coderising/dp/decorator/Encrypt.java b/students/1158154002/src/main/java/com/coderising/dp/decorator/Encrypt.java new file mode 100644 index 0000000000..79f2a4a4d6 --- /dev/null +++ b/students/1158154002/src/main/java/com/coderising/dp/decorator/Encrypt.java @@ -0,0 +1,76 @@ +package com.coderising.dp.decorator; + +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; + +public class Encrypt { + /** + * 传入文本内容,返回 SHA-256 串 + * + * @param strText + * @return + */ + public static String SHA256(final String strText) + { + return SHA(strText, "SHA-256"); + } + + /** + * 传入文本内容,返回 SHA-512 串 + * + * @param strText + * @return + */ + public static String SHA512(final String strText) + { + return SHA(strText, "SHA-512"); + } + + /** + * 字符串 SHA 加密 + * + * @param strSourceText + * @return + */ + private static String SHA(final String strText, final String strType) + { + // 返回值 + String strResult = null; + + // 是否是有效字符串 + if (strText != null && strText.length() > 0) + { + try + { + // SHA 加密开始 + // 创建加密对象 并傳入加密類型 + MessageDigest messageDigest = MessageDigest.getInstance(strType); + // 传入要加密的字符串 + messageDigest.update(strText.getBytes()); + // 得到 byte 類型结果 + byte byteBuffer[] = messageDigest.digest(); + + // 將 byte 轉換爲 string + StringBuffer strHexString = new StringBuffer(); + // 遍歷 byte buffer + for (int i = 0; i < byteBuffer.length; i++) + { + String hex = Integer.toHexString(0xff & byteBuffer[i]); + if (hex.length() == 1) + { + strHexString.append('0'); + } + strHexString.append(hex); + } + // 得到返回結果 + strResult = strHexString.toString(); + } + catch (NoSuchAlgorithmException e) + { + e.printStackTrace(); + } + } + + return strResult; + } +} From 2bc90bae989a979f278865ef53c1ff09517cc2f8 Mon Sep 17 00:00:00 2001 From: bendell02 <1203029076@qq.com> Date: Thu, 3 Aug 2017 01:31:23 +0800 Subject: [PATCH 11/13] =?UTF-8?q?=E4=BD=9C=E4=B8=9A3=EF=BC=9A=E5=AE=9E?= =?UTF-8?q?=E7=8E=B0=E8=A3=85=E9=A5=B0=E8=80=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/coderising/dp/decorator/Email.java | 6 ++++++ .../dp/decorator/EmailDecorator.java | 15 +++++++++++++++ .../coderising/dp/decorator/EmailImpl.java | 12 ++++++++++++ .../coderising/dp/decorator/EncryptEmail.java | 19 +++++++++++++++++++ .../coderising/dp/decorator/SendOutEmail.java | 14 ++++++++++++++ 5 files changed, 66 insertions(+) create mode 100644 students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/decorator/Email.java create mode 100644 students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/decorator/EmailDecorator.java create mode 100644 students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/decorator/EmailImpl.java create mode 100644 students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/decorator/EncryptEmail.java create mode 100644 students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/decorator/SendOutEmail.java diff --git a/students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/decorator/Email.java b/students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/decorator/Email.java new file mode 100644 index 0000000000..064de1e837 --- /dev/null +++ b/students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/decorator/Email.java @@ -0,0 +1,6 @@ +package com.coderising.dp.decorator; + +public interface Email { + public String getContent(); +} + diff --git a/students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/decorator/EmailDecorator.java b/students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/decorator/EmailDecorator.java new file mode 100644 index 0000000000..093d9d92c1 --- /dev/null +++ b/students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/decorator/EmailDecorator.java @@ -0,0 +1,15 @@ +package com.coderising.dp.decorator; + +public abstract class EmailDecorator implements Email{ + protected Email email; + + public EmailDecorator(Email email) { + // TODO Auto-generated constructor stub + this.email = email; + } + + public String getContent() { + // TODO Auto-generated method stub + return email.getContent(); + } +} \ No newline at end of file diff --git a/students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/decorator/EmailImpl.java b/students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/decorator/EmailImpl.java new file mode 100644 index 0000000000..640aef6da3 --- /dev/null +++ b/students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/decorator/EmailImpl.java @@ -0,0 +1,12 @@ +package com.coderising.dp.decorator; + +public class EmailImpl implements Email { + private String content; + + public EmailImpl(String content) { + this.content = content; + } + public String getContent() { + return content; + } +} diff --git a/students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/decorator/EncryptEmail.java b/students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/decorator/EncryptEmail.java new file mode 100644 index 0000000000..5715936bd2 --- /dev/null +++ b/students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/decorator/EncryptEmail.java @@ -0,0 +1,19 @@ +package com.coderising.dp.decorator; + +public class EncryptEmail extends EmailDecorator { + public EncryptEmail(Email email) { + // TODO Auto-generated constructor stub + super(email); + } + + @Override + public String getContent() { + // TODO Auto-generated method stub + return encrypt(super.getContent()); + } + + private String encrypt(String content) { + // concrete encrypt algorithm + return content+"encrypt"; + } +} diff --git a/students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/decorator/SendOutEmail.java b/students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/decorator/SendOutEmail.java new file mode 100644 index 0000000000..cd756c3cab --- /dev/null +++ b/students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/decorator/SendOutEmail.java @@ -0,0 +1,14 @@ +package com.coderising.dp.decorator; + +public class SendOutEmail extends EmailDecorator{ + public SendOutEmail(Email email) { + // TODO Auto-generated constructor stub + super(email); + } + + @Override + public String getContent() { + // TODO Auto-generated method stub + return super.getContent()+"\nʼΪ˹۵㣬˾"; + } +} From 2d33ec72ed7eb047da9186c5d1f1da7d07ca40f0 Mon Sep 17 00:00:00 2001 From: bendell02 <1203029076@qq.com> Date: Thu, 3 Aug 2017 01:32:20 +0800 Subject: [PATCH 12/13] =?UTF-8?q?=E4=BD=9C=E4=B8=9A4=EF=BC=9A=E5=AE=9E?= =?UTF-8?q?=E7=8E=B0Composite?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/coderising/dp/composite/Line.java | 10 ++++++ .../com/coderising/dp/composite/Picture.java | 35 +++++++++++++++++++ .../coderising/dp/composite/Rectangle.java | 11 ++++++ .../com/coderising/dp/composite/Shape.java | 5 +++ .../com/coderising/dp/composite/Square.java | 11 ++++++ .../com/coderising/dp/composite/Text.java | 11 ++++++ 6 files changed, 83 insertions(+) create mode 100644 students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/composite/Line.java create mode 100644 students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/composite/Picture.java create mode 100644 students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/composite/Rectangle.java create mode 100644 students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/composite/Shape.java create mode 100644 students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/composite/Square.java create mode 100644 students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/composite/Text.java diff --git a/students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/composite/Line.java b/students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/composite/Line.java new file mode 100644 index 0000000000..e6ab14c61b --- /dev/null +++ b/students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/composite/Line.java @@ -0,0 +1,10 @@ +package com.coderising.dp.composite; + +public class Line implements Shape { + + @Override + public void draw() { + System.out.println("I'm a line"); + } + +} diff --git a/students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/composite/Picture.java b/students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/composite/Picture.java new file mode 100644 index 0000000000..6775f730ac --- /dev/null +++ b/students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/composite/Picture.java @@ -0,0 +1,35 @@ +package com.coderising.dp.composite; + +import java.util.ArrayList; + +public class Picture implements Shape { + ArrayList shapes = new ArrayList<>(); + + @Override + public void draw() { + // TODO Auto-generated method stub + for(Shape shape:shapes) { + shape.draw(); + } + } + + public void add(Shape shape) { + shapes.add(shape); + } + + public static void main(String[] args) { + Picture aPicture = new Picture(); + + Picture p = new Picture(); + p.add(new Text()); + p.add(new Line()); + p.add(new Rectangle()); + + aPicture.add(p); + + aPicture.add(new Line()); + aPicture.add(new Rectangle()); + + aPicture.draw(); + } +} diff --git a/students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/composite/Rectangle.java b/students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/composite/Rectangle.java new file mode 100644 index 0000000000..7db5bb1c22 --- /dev/null +++ b/students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/composite/Rectangle.java @@ -0,0 +1,11 @@ +package com.coderising.dp.composite; + +public class Rectangle implements Shape { + + @Override + public void draw() { + // TODO Auto-generated method stub + System.out.println("I'm a rectangle"); + } + +} diff --git a/students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/composite/Shape.java b/students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/composite/Shape.java new file mode 100644 index 0000000000..4562f10b12 --- /dev/null +++ b/students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/composite/Shape.java @@ -0,0 +1,5 @@ +package com.coderising.dp.composite; + +public interface Shape { + public void draw(); +} diff --git a/students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/composite/Square.java b/students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/composite/Square.java new file mode 100644 index 0000000000..fd17ae3059 --- /dev/null +++ b/students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/composite/Square.java @@ -0,0 +1,11 @@ +package com.coderising.dp.composite; + +public class Square implements Shape { + + @Override + public void draw() { + // TODO Auto-generated method stub + System.out.println("I'm a Square"); + } + +} diff --git a/students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/composite/Text.java b/students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/composite/Text.java new file mode 100644 index 0000000000..c3c9ebf609 --- /dev/null +++ b/students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/composite/Text.java @@ -0,0 +1,11 @@ +package com.coderising.dp.composite; + +public class Text implements Shape { + + @Override + public void draw() { + // TODO Auto-generated method stub + System.out.println("I'm a Text"); + } + +} From dce082aa15af182f40b276535db89918120e5ffc Mon Sep 17 00:00:00 2001 From: bendell02 <1203029076@qq.com> Date: Thu, 3 Aug 2017 01:33:32 +0800 Subject: [PATCH 13/13] =?UTF-8?q?=E4=BD=9C=E4=B8=9A5=EF=BC=9A=E5=AE=9E?= =?UTF-8?q?=E7=8E=B0Bridge?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/coderising/dp/bridge/Circle.java | 19 +++++++++++++++ .../com/coderising/dp/bridge/Drawing.java | 6 +++++ .../com/coderising/dp/bridge/DrawingGL1.java | 18 ++++++++++++++ .../com/coderising/dp/bridge/DrawingGL2.java | 18 ++++++++++++++ .../coderising/dp/bridge/GraphicLibrary1.java | 11 +++++++++ .../coderising/dp/bridge/GraphicLibrary2.java | 11 +++++++++ .../com/coderising/dp/bridge/Rectangle.java | 24 +++++++++++++++++++ .../java/com/coderising/dp/bridge/Shape.java | 11 +++++++++ 8 files changed, 118 insertions(+) create mode 100644 students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/bridge/Circle.java create mode 100644 students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/bridge/Drawing.java create mode 100644 students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/bridge/DrawingGL1.java create mode 100644 students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/bridge/DrawingGL2.java create mode 100644 students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/bridge/GraphicLibrary1.java create mode 100644 students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/bridge/GraphicLibrary2.java create mode 100644 students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/bridge/Rectangle.java create mode 100644 students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/bridge/Shape.java diff --git a/students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/bridge/Circle.java b/students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/bridge/Circle.java new file mode 100644 index 0000000000..9762bd591d --- /dev/null +++ b/students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/bridge/Circle.java @@ -0,0 +1,19 @@ +package com.coderising.dp.bridge; + +public class Circle extends Shape { + private int x, y, r; + + public Circle(Drawing drawing, int x, int y, int r) { + super(drawing); + this.x = x; + this.y = y; + this.r = r; + } + + @Override + public void draw() { + // TODO Auto-generated method stub + drawing.drawCircle(x, y, r); + } + +} diff --git a/students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/bridge/Drawing.java b/students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/bridge/Drawing.java new file mode 100644 index 0000000000..d81f4709b9 --- /dev/null +++ b/students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/bridge/Drawing.java @@ -0,0 +1,6 @@ +package com.coderising.dp.bridge; + +public interface Drawing { + public void drawLine(int x1, int y1, int x2, int y2); + public void drawCircle(int x, int y, int r); +} diff --git a/students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/bridge/DrawingGL1.java b/students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/bridge/DrawingGL1.java new file mode 100644 index 0000000000..94410c0655 --- /dev/null +++ b/students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/bridge/DrawingGL1.java @@ -0,0 +1,18 @@ +package com.coderising.dp.bridge; + +public class DrawingGL1 implements Drawing { + private GraphicLibrary1 graphicLibray1; + + @Override + public void drawLine(int x1, int y1, int x2, int y2) { + // TODO Auto-generated method stub + graphicLibray1.draw_a_line(x1, y1, x2, y2); + } + + @Override + public void drawCircle(int x, int y, int r) { + // TODO Auto-generated method stub + graphicLibray1.draw_a_circle(x, y, r); + } + +} diff --git a/students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/bridge/DrawingGL2.java b/students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/bridge/DrawingGL2.java new file mode 100644 index 0000000000..757cc2c4b2 --- /dev/null +++ b/students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/bridge/DrawingGL2.java @@ -0,0 +1,18 @@ +package com.coderising.dp.bridge; + +public class DrawingGL2 implements Drawing { + private GraphicLibrary2 graphicLibrary2; + + @Override + public void drawLine(int x1, int y1, int x2, int y2) { + // TODO Auto-generated method stub + graphicLibrary2.drawLine(x1, x2, y1, y2); + } + + @Override + public void drawCircle(int x, int y, int r) { + // TODO Auto-generated method stub + graphicLibrary2.drawCircle(x, y, r); + } + +} diff --git a/students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/bridge/GraphicLibrary1.java b/students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/bridge/GraphicLibrary1.java new file mode 100644 index 0000000000..798cfbc7f9 --- /dev/null +++ b/students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/bridge/GraphicLibrary1.java @@ -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){ + + } + +} diff --git a/students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/bridge/GraphicLibrary2.java b/students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/bridge/GraphicLibrary2.java new file mode 100644 index 0000000000..2e67a1220b --- /dev/null +++ b/students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/bridge/GraphicLibrary2.java @@ -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){ + + } + +} diff --git a/students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/bridge/Rectangle.java b/students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/bridge/Rectangle.java new file mode 100644 index 0000000000..b297769c9a --- /dev/null +++ b/students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/bridge/Rectangle.java @@ -0,0 +1,24 @@ +package com.coderising.dp.bridge; + +public class Rectangle extends Shape { + private int x1, y1, x2, y2; + + public Rectangle(Drawing drawing, int x1, int y1, int x2, int y2) { + // TODO Auto-generated constructor stub + super(drawing); + this.x1 = x1; + this.y1 = y1; + this.x2 = x2; + this.y2 = y2; + } + + @Override + public void draw() { + // TODO Auto-generated method stub + drawing.drawLine(x1, y1, x1, y2); + drawing.drawLine(x1, y2, x2, y2); + drawing.drawLine(x2, y2, x2, y1); + drawing.drawLine(x2, y1, x1, y1); + } + +} diff --git a/students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/bridge/Shape.java b/students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/bridge/Shape.java new file mode 100644 index 0000000000..d909382018 --- /dev/null +++ b/students/1203029076/ood/ood-assignment/src/main/java/com/coderising/dp/bridge/Shape.java @@ -0,0 +1,11 @@ +package com.coderising.dp.bridge; + +public abstract class Shape { + protected Drawing drawing; + public Shape(Drawing drawing) { + // TODO Auto-generated constructor stub + this.drawing = drawing; + } + + public abstract void draw(); +}