From 9df8111ce6865f59d8ccb90b9ebead6df89d8486 Mon Sep 17 00:00:00 2001 From: Rao Lu Date: Thu, 15 Apr 2021 19:29:31 -0400 Subject: [PATCH] apply builder pattern --- builder/builder.py | 119 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 119 insertions(+) create mode 100644 builder/builder.py diff --git a/builder/builder.py b/builder/builder.py new file mode 100644 index 0000000..eb205da --- /dev/null +++ b/builder/builder.py @@ -0,0 +1,119 @@ +class Plotter(ABC): + + @abstractmethod + def setTitle(self): + pass + + @abstractmethod + def setXlabel(self): + pass + + @abstractmethod + def setYlabel(self): + pass + + @abstractmethod + def getResult(self): + pass + + +class Graph(): + def __init__(self): + self.Xcol = None + self.Ycol = None + self.style = None + self.title = None + self.Xlabel = None + self.Ylabel = None + self.grid = None + + +class ScatterPlotterv1(Plotter): + def __init__(self): + self.graph = Graph() + self.x = 10 + self.y = 6 + self.style = 'o' + + def setXlabel(self, xl): + self.graph.Xlabel = xl + return self.graph + + def setYlabel(self, yl): + self.graph.Ylabel = yl + return self.graph + + def setTitle(self, t): + self.graph.title = t + return self.graph + + def getResult(self): + return self.graph + + +class ScatterPlotterv2(Plotter): + def __init__(self): + self.graph = Graph() + self.style = 'o' + + def setXcol(self, x): + self.graph.Xcol = x + return self.graph + + def setYcol(self, y): + self.graph.Ycol = y + return self.graph + + def setStyle(self, s): + self.graph.style = s + return self.graph + + def setTitle(self, t): + self.graph.title = t + return self.graph + + def setXlabel(self, xl): + self.graph.Xlabel = xl + return self.graph + + def setYlabel(self, yl): + self.graph.Ylabel = yl + return self.graph + + def getResult(self): + return self.graph + + +class SeriesPlotter(Plotter): + def __init__(self): + self.graph = Graph() + self.start = 0 + self.end = None + self.format = '-' + + def setTime(self): + self.time = time[start, end] + return self.graph + + def setXlabel(self, xl): + self.graph.setXlabel = xl + return self.graph + + def setYlabel(self, yl): + self.graph.setYlabel = yl + return self.graph + + def setGrid(self, g): + self.graph.grid = g + return self.graph + + def getResult(self): + return self.graph + + +class Director: + def __init__(self) -> None: + self._builder = None + + def setGraph(self, graph): + self.graph = graph