Skip to content

Código duplicado (parte 2)

Código duplicado en varias clases con la misma herencia

El caso anterior puede darse también, cuando el código se encuentra duplicado en diferentes métodos de clases con la misma herencia:

php
class B extends A {
    static function method_1() {
        self::$property = strip_tags(self::$property);
        self::$property = htmlentities(self::property);
        return self::methodA() . self::$property;
    }
}

class C extends A {
    static function method_2() {
        self::$property = strip_tags(self::$property);
        self::$property = htmlentities(self::property);
        return self::$property . self::methodB() . self::methodC();
    }
}

En estos casos, en los cuáles existen dos o más clases que heredan de la misma clase, se extrae el código duplicado en los métodos de las clases hijas, y con éste, se crea un nuevo método de en la clase madre:

php
class A {
    static function method_3() {
        self::$property = strip_tags(self::$property);
        self::$property = htmlentities(self::property);
    }
}

class B extends A {
    static function method_1() {
        self::method_3();
        return self::methodA() . self::$property;
    }
}

class C extends A {
    static function method_2() {
        self::method_3();
        return self::$property . self::methodB() . self::methodC();
    }
}