Ciò che ho ottenuto ora è un oggetto di basso livello che ha molti metodi e la sua difficile navigazione attraverso cui voglio suddividerlo, tuttavia le funzioni hanno logicamente le stesse funzionalità solo un'implementazione differente
class HTMLManipulator {
function findElementById($html, $element) {
...
}
function setElementById($html, $element, $newValue) {
...
}
function findElementByIdDom(DOMDocument $dom, $element) {
...
}
function setElementByIdDom(DOMDocument $dom, $element, $newValue) {
...
}
... few other unique functions...
function TidyUpHTML($arg) {
...
}
}
Uso sia la funzione findElementById
, setElementById
e findElementByIdDom
, setElementByIdDom
in diverse parti della mia applicazione, quindi non posso semplicemente eliminarne una, mi chiedo quale approccio dovrei prendere per dividere questa classe?
Dovrei creare interface
e due classi implementarlo vs semplicemente creare una classe genitore con tutte le funzionalità ed estenderla sovrascrivendo le funzionalità chiave della classe genitore quando necessario?
class HTMLManipulator {
function findElementById(DOMDocument $dom, $element) {
...
}
function setElementById(DOMDocument $dom, $element, $newValue) {
...
}
... few other unique functions...
function TidyUpHTML($arg) {
...
}
}
.
//only overwrites this two methods from parent class inherits the rest
class HTMLManipulatorString extends HTMLManipulator {
function findElementById($html, $element) {
...
}
function setElementById($html, $element, $newValue) {
...
}
}
page_one.php
$obj = new HTMLManipulator();
$content = $obj->findElementById($dom, "pageFooter");
$obj->setElementById($dom, "pageContent", "Hello World!");
$obj->TidyUpHTML($content);
...
page_two.php
$obj2 = new HTMLManipulatorString();
$menu = $obj->findElementById($html, "mainMenu");
$obj->setElementById($html, "pageFooter", "Copyright 2016");
$obj->TidyUpHTML($menu);
...
Questo codice è un esempio di pratica OOP scorretta con qualsiasi mezzo e utilizzeresti questo approccio rispetto alla creazione di% condivisi% co_de e due classi che lo implementano?