Sto cercando di seguire LSP nella programmazione pratica. E mi chiedo se diversi costruttori di sottoclassi lo violano. Sarebbe bello ascoltare una spiegazione invece di solo sì / no. Grazie mille!
P.S. Se la risposta è no
, come faccio a fare strategie diverse con input diversi senza violare LSP?
class IStrategy
{
public:
virtual void use() = 0;
};
class FooStrategy : public IStrategy
{
public:
FooStrategy(A a, B b) { c = /* some operations with a, b */ }
virtual void use() { std::cout << c; }
private:
C c;
};
class BarStrategy : public IStrategy
{
public:
BarStrategy(D d, E e) { f = /* some operations with d, e */ }
virtual void use() { std::cout << f; }
private:
F f;
};