Помечаем в мозгу, что рефакторинг остановлен и мы начинаем заниматься разработкой.
Тактика, которую мы будем использовать такова: создаем классы и методы, которые считаем нужными, и с таким интерфейсом, который считаем удобным. Затем используем то, что нам необходимо из старого проекта, но не тупо переносим, а делаем это по аналогии, и с использованием возможностей AS3.
Начнем со структуры.
В папке svg создадим класс DocumentSVG.
В папке geom создадим папку lines и переместим в нее все классы папки geom, исправим ошибки, возникшие вследствие этого.
Вернемся к стандарту SVG, а именно к его части, описывающей остальные фигуры:
http://www.w3.org/TR/SVG11/shapes.html#Introduction
и посмотрим, рисование каких фигур поддерживается:
path, rect, circle, ellipse, line, polyline, polygon.
Создадим папку shapes в папке geom. Создадим базовый класс для всех фигур: ShapeSVG.
И в этой же папке объявим интерфейс IShapeSVG:
Код AS3:
package com.itechnica.svg.geom.shapes {
import flash.display.Graphics;
public interface IShapeSVG {
function update(svgNode : XML) : void;
function toSVG() : XML;
function toString() : String;
function draw(target : Graphics) : void;
}
}
В этой же папке создадим классы соответственно списку: PathShape, RectangleShape, CircleShape, EllipseShape, LineShape, PolyLineShape, PolygonShape. Все их унаследуем от
ShapeSVG и имплементируем интерфейс IShapeSVG.
По-началу все они будут выглядеть как близнеца братья, вот так:
Код AS3:
package com.itechnica.svg.geom.shapes {
import flash.display.Graphics;
public class CircleShape extends ShapeSVG implements IShapeSVG {
public function update(svgNode : XML) : void {
}
public function toSVG() : XML {
return null;
}
public function toString() : String {
return "";
}
public function draw(target : Graphics) : void {
}
}
}
Теперь, когда структура реализована, нам потребуется тестовый SVG файл, в котором присутствуют все виды применяемых линий и свойств. Текущий пример, который мы использовали больше не удовлетворяет нашим требованиям, поскольку от рефакторинга мы перешли к разработке.