[Change] refactor

This commit is contained in:
2023-05-28 12:15:24 +07:00
parent 38f079c5fc
commit c7b28c2ce8
9 changed files with 89 additions and 73 deletions
@@ -3,6 +3,6 @@ package dev.miti99.lotterygenerator;
import java.util.List;
public interface LotteryGenerator {
List<Integer> generateNumbers();
List<Integer> generateNumbers(int numNumber);
List<Integer> generateNumbers(int numNumber);
}
@@ -1,7 +1,12 @@
package dev.miti99.lotterygenerator;
import dev.miti99.lotterygenerator.mega.Mega645Generator;
public class Main {
public static void main(String[] args) {
System.out.println("Hello world!");
}
public static void main(String[] args) {
var generator = new Mega645Generator();
var result = generator.generateNumbers(4);
System.out.println(result);
}
}
@@ -0,0 +1,17 @@
package dev.miti99.lotterygenerator.mega;
import java.util.List;
public class BasePresetGenerator extends MegaGenerator {
int numNumber;
public BasePresetGenerator(int minNumber, int maxNumber, int numNumber) {
super(minNumber, maxNumber);
this.numNumber = numNumber;
}
public List<Integer> generateNumbers() {
return generateNumbers(numNumber);
}
}
@@ -1,12 +1,12 @@
package dev.miti99.lotterygenerator.mega;
public class Mega645Generator extends MegaGenerator {
public class Mega645Generator extends BasePresetGenerator {
public Mega645Generator(int numNumber) {
super(1, 45, numNumber);
}
public Mega645Generator(int numNumber) {
super(1, 45, numNumber);
}
public Mega645Generator() {
this(6);
}
public Mega645Generator() {
this(6);
}
}
@@ -1,12 +1,12 @@
package dev.miti99.lotterygenerator.mega;
public class Mega655Generator extends MegaGenerator {
public class Mega655Generator extends BasePresetGenerator {
public Mega655Generator(int numNumber) {
super(1, 55, numNumber);
}
public Mega655Generator(int numNumber) {
super(1, 55, numNumber);
}
public Mega655Generator() {
this(6);
}
public Mega655Generator() {
this(6);
}
}
@@ -1,45 +1,39 @@
package dev.miti99.lotterygenerator.mega;
import dev.miti99.lotterygenerator.LotteryGenerator;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
public abstract class MegaGenerator implements LotteryGenerator {
int minNumber;
int maxNumber;
int numNumber;
public class MegaGenerator implements LotteryGenerator {
public MegaGenerator(int minNumber, int maxNumber, int numNumber) {
this.minNumber = minNumber;
this.maxNumber = maxNumber;
this.numNumber = numNumber;
}
int minNumber;
int maxNumber;
protected int getTotalNumber() {
return maxNumber - minNumber + 1;
}
protected List<Integer> generateBaseNumbers() {
return IntStream.rangeClosed(minNumber, maxNumber).boxed().collect(Collectors.toList());
}
public MegaGenerator(int minNumber, int maxNumber) {
this.minNumber = minNumber;
this.maxNumber = maxNumber;
}
@Override
public List<Integer> generateNumbers(int numNumber) {
var baseNumbers = generateBaseNumbers();
var result = new ArrayList<Integer>(numNumber);
for (int i = 0; i < numNumber; i++) {
var index = (int) (Math.random() * baseNumbers.size());
result.add(baseNumbers.get(index));
baseNumbers.remove(index);
}
return result;
}
protected int getTotalNumber() {
return maxNumber - minNumber + 1;
}
@Override
public List<Integer> generateNumbers() {
return generateNumbers(numNumber);
protected List<Integer> generateBaseNumbers() {
return IntStream.rangeClosed(minNumber, maxNumber).boxed().collect(Collectors.toList());
}
@Override
public List<Integer> generateNumbers(int numNumber) {
var baseNumbers = generateBaseNumbers();
var result = new ArrayList<Integer>(numNumber);
for (int i = 0; i < numNumber; i++) {
var index = (int) (Math.random() * baseNumbers.size());
result.add(baseNumbers.get(index));
baseNumbers.remove(index);
}
return result;
}
}
@@ -2,11 +2,11 @@ package dev.miti99.lotterygenerator.mega.reverserd;
public class ReversedMega645Generator extends ReversedMegaGenerator {
public ReversedMega645Generator(int numNumber) {
super(1, 45, numNumber);
}
public ReversedMega645Generator(int numNumber) {
super(1, 45, numNumber);
}
public ReversedMega645Generator() {
this(6);
}
public ReversedMega645Generator() {
this(6);
}
}
@@ -2,11 +2,11 @@ package dev.miti99.lotterygenerator.mega.reverserd;
public class ReversedMega655Generator extends ReversedMegaGenerator {
public ReversedMega655Generator(int numNumber) {
super(1, 55, numNumber);
}
public ReversedMega655Generator(int numNumber) {
super(1, 55, numNumber);
}
public ReversedMega655Generator() {
this(6);
}
public ReversedMega655Generator() {
this(6);
}
}
@@ -1,18 +1,18 @@
package dev.miti99.lotterygenerator.mega.reverserd;
import dev.miti99.lotterygenerator.mega.MegaGenerator;
import dev.miti99.lotterygenerator.mega.BasePresetGenerator;
import java.util.List;
public class ReversedMegaGenerator extends MegaGenerator {
public ReversedMegaGenerator(int minNumber, int maxNumber, int numNumber) {
super(minNumber, maxNumber, numNumber);
}
public class ReversedMegaGenerator extends BasePresetGenerator {
@Override
public List<Integer> generateNumbers(int numNumber) {
var baseNumbers = generateBaseNumbers();
var removedNumbers = super.generateNumbers(getTotalNumber() - numNumber);
return baseNumbers.stream().filter(n -> !removedNumbers.contains(n)).toList();
}
public ReversedMegaGenerator(int minNumber, int maxNumber, int numNumber) {
super(minNumber, maxNumber, numNumber);
}
@Override
public List<Integer> generateNumbers(int numNumber) {
var baseNumbers = generateBaseNumbers();
var removedNumbers = super.generateNumbers(getTotalNumber() - numNumber);
return baseNumbers.stream().filter(n -> !removedNumbers.contains(n)).toList();
}
}