Skip to content

Retroalimentación patrones de diseño: Factory Method  #182

@AndresSalazar19

Description

@AndresSalazar19

He elegido el patrón Factory Method para la implementación de los planificadores de máquinas virtuales (VmScheduler) porque este patrón proporciona una manera flexible y escalable de crear objetos sin tener que especificar las clases exactas de los objetos que se van a crear. Los diferentes tipos de VmScheduler (como VmSchedulerSpaceShared y VmSchedulerTimeShared) representan estrategias diferentes para asignar recursos a las máquinas virtuales. El Factory Method permite encapsular la lógica específica de cada estrategia y proporciona una interfaz común para interactuar con todas las estrategias.

Una manera de implementarlo sería:
jPNBRi8m44Nt-Ghl2eBy04Aeg0W9gL5HeUow6981B3bnQZkeLTj_hstoS23XqQfPPE4vSprt_BgN2eJAOkRTaGbkQ8846Pb2gBZu806g7Oz82WB8Abw4EumoXiA3jLH2CoHa8AKRAZ8_FQA_7Wa5Wi8ot4cHKQa6v57_XtCSTScWflpjUIUQkPXFKZHffCeknmD8zR3-3nTAq6JRBv62YM

Código:
package org.cloudbus.cloudsim;

/**

  • Interfaz de fábrica para crear instancias de VmScheduler.
    */
    public abstract class VmSchedulerFactory {
    public abstract VmScheduler createScheduler(List<? extends Pe> pelist);
    }

package org.cloudbus.cloudsim;

import java.util.List;

/**

  • Fábrica concreta para crear instancias de VmSchedulerTimeShared.
    */
    public class VmSchedulerTimeSharedFactory extends VmSchedulerFactory {
    @OverRide
    public VmScheduler createScheduler(List<? extends Pe> pelist) {
    return new VmSchedulerTimeShared(pelist);
    }
    }

package org.cloudbus.cloudsim;

import java.util.List;

/**

  • Fábrica concreta para crear instancias de VmSchedulerSpaceShared.
    */
    public class VmSchedulerSpaceSharedFactory extends VmSchedulerFactory {
    @OverRide
    public VmScheduler createScheduler(List<? extends Pe> pelist) {
    return new VmSchedulerSpaceShared(pelist);
    }
    }

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions