mirror of https://github.com/01-edu/public.git
docs: adding subject and main
This commit is contained in:
parent
6f4f10e010
commit
868e5821e6
|
@ -0,0 +1,11 @@
|
|||
public class ExerciseRunner {
|
||||
public static void main(String[] args) {
|
||||
RegexDirector director = new RegexDirector();
|
||||
RegexBuilder builder = new ConcreteRegexBuilder();
|
||||
|
||||
director.setBuilder(builder);
|
||||
Regex regex = director.construct();
|
||||
|
||||
System.out.println(regex);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,96 @@
|
|||
## Builder Blueprint
|
||||
|
||||
### Instructions
|
||||
|
||||
You are given an incomplete Builder design pattern implementation with some incorrect parts. Complete and fix the classes to demonstrate your understanding of how the Builder design pattern works.
|
||||
|
||||
Regex component required:
|
||||
- Any Character: `.`
|
||||
- Digit: `\d`
|
||||
- Whitespace : `\s`
|
||||
- Word Character: `\w`
|
||||
|
||||
|
||||
### Expected Classes
|
||||
|
||||
```java
|
||||
// Regex class
|
||||
public class Regex {
|
||||
private StringBuilder pattern;
|
||||
|
||||
public Regex(List<String> component) {
|
||||
...
|
||||
}
|
||||
|
||||
public String getPattern() {
|
||||
return pattern.toString();
|
||||
}
|
||||
}
|
||||
|
||||
// Builder interface
|
||||
public ... RegexBuilder {
|
||||
void buildLiteral(String literal);
|
||||
void buildAnyCharacter();
|
||||
void buildDigit();
|
||||
void buildWhitespace();
|
||||
void buildWordCharacter();
|
||||
Regex getResult();
|
||||
}
|
||||
|
||||
// ConcreteRegexBuilder class
|
||||
public class ConcreteRegexBuilder {
|
||||
private Regex regex = new Regex();
|
||||
List<String> component;
|
||||
|
||||
...
|
||||
|
||||
@Override
|
||||
public Regex getResult() {
|
||||
// Missing return statement
|
||||
}
|
||||
}
|
||||
|
||||
// RegexDirector class
|
||||
public class RegexDirector {
|
||||
private RegexBuilder builder;
|
||||
|
||||
public void setBuilder(RegexBuilder builder) {
|
||||
this.builder = builder;
|
||||
}
|
||||
|
||||
public Regex construct() {
|
||||
builder.buildLiteral("Hello");
|
||||
builder.buildWhitespace();
|
||||
builder.buildWordCharacter();
|
||||
builder.buildAnyCharacter();
|
||||
return builder.getResult();
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Usage
|
||||
|
||||
Here is a possible `ExerciseRunner.java` to test your classes:
|
||||
|
||||
```java
|
||||
public class ExerciseRunner {
|
||||
public static void main(String[] args) {
|
||||
RegexDirector director = new RegexDirector();
|
||||
RegexBuilder builder = new ConcreteRegexBuilder();
|
||||
|
||||
director.setBuilder(builder);
|
||||
Regex regex = director.construct();
|
||||
|
||||
System.out.println(regex);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Expected Output
|
||||
|
||||
```shell
|
||||
$ javac *.java -d build
|
||||
$ java -cp build ExerciseRunner
|
||||
Hello\s\w.
|
||||
$
|
||||
```
|
Loading…
Reference in New Issue