Anexsoft | Blog y dictado de cursos de Tecnología

En este encontrarás tutoriales de tecnología como PHP, ASP.NET MVC, Front-End, entre otros y cursos exigentes de modalidad online que te ayudarán a crecer profesionalmente.

SOLID #4: Interface Segregation Principle con C#
Actualizado el 01 Junio, 2017 y leído 1,009 veces
Calificación: 10.00 / 10

SOLID #4: Interface Segregation Principle con C#

Anexsoft

Partiendo del primer principio, lo que quiere decir basicamente este es que aprendas a crear interfaces para definir comportamientos y de esta manera lo puedas desacoplar libremente.

Hagamos un ejemplo de magos y hechizos que pueden realizar:

interface SpecialPower
{
    void FireAttack();
    void SummonAMonster();
    void TimeStop();
}

class FireMage : SpecialPower
{
    public void FireAttack()
    {

    }

    public void SummonAMonster()
    {
        throw new Exception("Can't use that");
    }

    public void TimeStop()
    {
        throw new Exception("Can't use that");
    }
}

class Summoner : SpecialPower
{
    public void FireAttack()
    {
        throw new Exception("Can't use that");
    }

    public void SummonAMonster()
    {

    }

    public void TimeStop()
    {
        throw new Exception("Can't use that");
    }
}

class GrandMage : SpecialPower
{
    public void FireAttack()
    {

    }

    public void SummonAMonster()
    {

    }

    public void TimeStop()
    {

    }
}

El problema aquí es que todos implementa la misma interfaz y realmente todo los magos no pueden hacer todo los poderes a excepción del GranMage (que es el mago más experimentado). Lo mejor que podemos hacer es dividir nuestra interfaz grande, en mini interfaces de esta manera podemos asignar comportamiento a quien queramos.

Nuestro código mejorado quedaría así:

interface IFireSpell
{
    void FireAttack();
}

interface ISummonSpell
{
    void SummonAMonster();
}

interface ITimeStopSpell
{
    void TimeStop();
}

class FireMage : IFireSpell
{
    public void FireAttack()
    {

    }
}

class Summoner : ISummonSpell
{
    public void SummonAMonster()
    {
        
    }
}

class GrandMage : ITimeStopSpell, IFireSpell, ISummonSpell
{
    public void FireAttack()
    {

    }

    public void SummonAMonster()
    {

    }

    public void TimeStop()
    {

    }
}

De esta manera si en un futuro queremos agregar un hechizo más solo debemos crear otra interface y luego nosotros decidiremos quien lo va a implementar.

¡Adquiera ya!

  • Código de fuente de Red Social desarrollada en ASP.NET MVC

    Código de fuente de Red Social desarrollada en ASP.NET MVC
  • Software de Portafolio Profesional hecho en ASP.NET MVC 5 C#

    Software de Portafolio Profesional hecho en ASP.NET MVC 5 C#
  • Software de Venta e Inventario hecho en PHP y Codeigniter

    Software de Venta e Inventario hecho en PHP y Codeigniter

Últimas publicaciones

Encuesta

¿Cómo nos conociste?

Síguenos

Estudia con nosotros y crece profesionalmente

Nuestros cursos han sido hecho en base a lo que demanda el mercado hoy en día.
La experiencia obtenida es la de un ambiente laboral.

Anexsoft
© 2017 Anexsoft, blog y cursos online de TI.