Моя озабоченность в приведенном ниже коде заключается в том, что параметр для конструктора фактически не сопоставляется непосредственно с полями экземпляра класса. Поля экземпляра извлекают значение из параметра и для которого я использую метод initalize. Кроме того, я делаю некоторые вещи, чтобы созданный объект мог использоваться непосредственно в следующем коде. вызывая drawBoundaries(). Я чувствую, что он делает то, что подразумевается под созданием (инициализацией) Canvas в абстрактном смысле.
Мой конструктор слишком много работает? Если я добавлю методы для прямого вызова материала в конструкторе извне, это будет неправильно. Пожалуйста, дайте мне знать ваши взгляды.
public class Canvas {
private int numberOfRows;
private int numberOfColumns;
private final List<Cell> listOfCells = new LinkedList<Cell>();
public Canvas(ParsedCells seedPatternCells) {
initalizeCanvas(seedPatternCells);
}
private void initalizeCanvas(ParsedCells seedPatternCells) {
setNumberOfRowsAndColumnsBasedOnSeedPatten(seedPatternCells);
drawBoundaries();
placeSeedPatternCellsOnCanvas(seedPatternCells);
}
...
P.S.: Извините, если это выглядит глупым вопросом; мой код будет рассмотрен гуру ООП, и я просто волнуюсь: -0
EDIT:
Я прочитал некоторые соображения о том, что методы initalizeCanvas() перегружены - к счастью, эти методы являются частными и не требуют каких-либо других методов.
В любом случае, после дальнейших исследований в сети, мне стало нравиться больше... Надеюсь, вы согласитесь, ребята!??
public class Canvas {
private int numberOfRows;
private int numberOfColumns;
private final List<Cell> listOfCells = new LinkedList<Cell>();
private Canvas() {
}
public static Canvas newInstance(ParsedCells seedPatternCells) {
Canvas canvas = new Canvas();
canvas.setNumberOfRowsAndColumnsBasedOnSeedPatten(seedPatternCells);
canvas.drawBoundaries();
canvas.placeSeedPatternCellsOnCanvas(seedPatternCells);
return canvas;
}