1. Design pattern name : Factory method pattern

2. Design pattern object : QrSegment,
MakeAlphaNumericToSegment,MakeBytesToSegment,  MakeNumericToSegment
3. reason : function to make segment is changed by kind of string. And
there is possible to add function to make segment.

4. explanation :
product : MakeSegment,
concrete product : MakeBytesToSegment, MakeNumericToSegment,
MakeAlphaNumericToSegment
creator : QrSegmentTo
concrete creator : MakeSegmentFactory
pull/90/head^2
jaemin7666 5 years ago
parent 27dc7057c9
commit 9f70303e5d

@ -0,0 +1,4 @@
public interface MakeSegment {
public QrSegment excute(String text);
}

@ -0,0 +1,15 @@
public class MakeSegmentFactory {
public static MakeSegment getMakeSegment(String text) {
MakeSegment makeSegment = null;
if (text.equals("")); // Leave result empty
else if (QrSegment.NUMERIC_REGEX.matcher(text).matches())
makeSegment = new MakeNumericToSegment();
else if (QrSegment.ALPHANUMERIC_REGEX.matcher(text).matches())
makeSegment = new MakeAlphaNumericToSegment();
else
makeSegment = new MakeBytesToSegment();
return makeSegment;
}
}

@ -71,7 +71,17 @@ public final class QrSegment {
return segments; return segments;
} }
public static List<QrSegment> makeSegments(String text) {
Objects.requireNonNull(text);
// Select the most efficient segment encoding automatically
List<QrSegment> segments = new ArrayList<>();
MakeSegment makeSegment = MakeSegmentFactory.getMakeSegment(text);
segments.add(makeSegment.excute(text));
return segments;
}
/** /**
* Returns a segment representing an Extended Channel Interpretation * Returns a segment representing an Extended Channel Interpretation
* (ECI) designator with the specified assignment value. * (ECI) designator with the specified assignment value.

Loading…
Cancel
Save