Hirdetés

Keresés

Új hozzászólás Aktív témák

  • #03372544
    törölt tag

    Üdv!

    A lenti kód (természetesen más szöveggel) azt hivatott bemutatni jelenleg hogy indítok el egy job-ot a lenyomott menü szövege alapján. Van erre valami elegánsabb megoldás? (a menü elemek a saját action commandjukat küldik egy listenernek)

    [azon kívül hogy elrejtem valami hasonló metódusba:
    getJob(String jobname).run(); ]

    if(owner.getAction().name().equals("Do this then that") new WorkerJobDoThisThenThat.run();
    if(owner.getAction().name().equals("Start something") new WorkerStartSomething.run();
    if(owner.getAction().name().equals("Execute this") new WorkerExecuteThis.run();
    if(owner.getAction().name().equals("Running out of ideas") new WorkerRunningOutOfIdeas.run();

    :R

    Ilyesmire gondolt a kolléga.

    package example;

    public interface Job {

    void doTheJob();

    }

    -------------------------------------------------------------------------------------------------------------------------

    package example;

    public class ExecuteThisJob implements Job {

    @Override
    public void doTheJob() {
    System.out.println("ezt végrehajtom");
    }

    }

    -------------------------------------------------------------------------------------------------------------------------

    package example;

    public class RunningOutOfIdeasJob implements Job {

    @Override
    public void doTheJob() {
    System.out.println("nincs több ötletem");
    }

    }

    -------------------------------------------------------------------------------------------------------------------------

    package example;

    public class StartSomethingJob implements Job {

    @Override
    public void doTheJob() {
    System.out.println("valamit elindítok");
    }

    }

    -------------------------------------------------------------------------------------------------------------------------

    package example;

    import java.util.HashMap;
    import java.util.Map;

    public class JobFactory {

    private static final JobFactory INSTANCE;

    static {
    INSTANCE = new JobFactory();
    }

    private Map<String, Job> jobMapping;

    private JobFactory() {
    jobMapping = new HashMap<String, Job>();
    jobMapping.put("executeThis", new ExecuteThisJob());
    jobMapping.put("startSomething", new StartSomethingJob());
    jobMapping.put("runningOutOfIdeas", new RunningOutOfIdeasJob());
    }

    public static Job getJob(String jobType) {
    return INSTANCE.jobMapping.get(jobType);
    }

    }

    -------------------------------------------------------------------------------------------------------------------------

    package example;

    public class JobFactoryExample {

    private JobFactoryExample() {
    }

    public static void main(String[] args) {
    JobFactoryExample example = new JobFactoryExample();

    example.doTheAction("executeThis");
    example.doTheAction("startSomething");
    example.doTheAction("runningOutOfIdeas");
    }

    public void doTheAction(String actionName) {
    JobFactory.getJob(actionName).doTheJob();
    }

    }

  • WonderCSabo
    félisten

    Üdv!

    A lenti kód (természetesen más szöveggel) azt hivatott bemutatni jelenleg hogy indítok el egy job-ot a lenyomott menü szövege alapján. Van erre valami elegánsabb megoldás? (a menü elemek a saját action commandjukat küldik egy listenernek)

    [azon kívül hogy elrejtem valami hasonló metódusba:
    getJob(String jobname).run(); ]

    if(owner.getAction().name().equals("Do this then that") new WorkerJobDoThisThenThat.run();
    if(owner.getAction().name().equals("Start something") new WorkerStartSomething.run();
    if(owner.getAction().name().equals("Execute this") new WorkerExecuteThis.run();
    if(owner.getAction().name().equals("Running out of ideas") new WorkerRunningOutOfIdeas.run();

    :R

    Berakhatod egy Map-be, de egyébként ez tipikusan a Factory minta.

Új hozzászólás Aktív témák