Ho una classe Color
. Ha una proprietà model
che è una classe che implementa l'interfaccia ColorModel
, questa proprietà potrebbe essere una RGB
, Hex
o HSL
classi che implementano l'interfaccia ColorModel
.
// Color.php
class Color {
protected $model;
public static function factory (Model $model) {
return new Color($model);
}
public function __construct (Model $model) {
$this->model = $model;
}
public function getModel () {
return $this->model;
}
public function set ($color) {
$this->model->set($color);
}
public function raw ($string = false) {
return $this->model->raw($string);
}
public function check (Color $color) {
return get_class($this->model) === get_class($color->getModel());
}
public function isModel ($type) {
return $type === $this->model->getName();
}
// Converter probably suppose to be a strategy which converts color model to another color model
public function convert (Converter $convert) {
// I'm stack here...
}
}
// ColorModel.php
interface ColorModel {
// Parser is a class which parses input string/int and converts it to components
public function __construct (Parser $parser, $x, $y, $z);
public function raw ($string = false);
public function set ($color);
public function getName ();
}
Non sono sicuro di come implementare la conversione di ColorModel
s. Come posso implementare la conversione di questi diversi modelli senza dover creare ogni classe per ogni set ( RGB2HSL
, HSL2RGB
. Diciamo che aggiungo LAB
class quattro altre classi: LAB2RGB
, LAB2HSL
, HSL2LAB
, RGB2LAB
e altro ancora e altro)? È possibile a tutti?
Grazie per l'attenzione!