Avatar
Dog
Člen
Avatar
Dog:

Mám v programu:

class base //provadi roztrideni dat do parametru a mam tam parametr bool, ktery urcuje, jestli by se mely provest funkce ze zdedene tridy1 nebo 2

//zdedene tridy nemaji zadne dalsi parametry, pouze odlišné funkce se stejnymi jmeny, analyzuji dle pole o 1500 řadcich a 38 sloupcich
//dedeni jej zde dano kvuli tomu, ze obe tridy analyzuji obrovske mnozstv dat na zaklade odlisnych poli a je zbytecne volat tak pametove narocnou tridu
class zdedena1
class zdedena2

Tak se ptam, jestli to jde vyřešit nějak elegantněji, něž proměnnými se třídami, popř. sloucenim do jedne tridy

chtel bych aby se na zaklade boolu rozsirilo base tridu o zdedenou1 nebo zdedenou2.

 
Odpovědět 8.10.2016 13:12
Avatar
Odpovídá na Dog
sadlomaslox25:
public interface IProcessor
{
    byte[] Process(byte[] data);
}

public class Procesor1 : IProcessor
{
    public byte[] Process(byte[] data)
    {
        throw new NotImplementedException();
    }
}

public class Procesor2 : IProcessor
{
    public byte[] Process(byte[] data)
    {
        throw new NotImplementedException();
    }
}

public enum Strategy
{
    S1,S2
}

public class Evaluator
{
    private byte[] data;
    public void Evaluate(Strategy strategy)
    {
        IProcessor processor = null;
        switch (strategy)
        {
            case Strategy.S1:
                processor = new Procesor1();
                break;
            case Strategy.S2:
                processor = new Procesor2();
                break;
        }
        data = processor.Process(data);
    }
}
 
Nahoru Odpovědět 8.10.2016 14:09
Avatar
Dog
Člen
Avatar
Dog:

Nakonec jsem to musel vyřešit tak, že jsem obě třídy sloučil... Ale přesto bych byl rád, kdyby mi to někdo vysvětlil jak to funguje, protože se rád naučím něco nového...

 
Nahoru Odpovědět 9.10.2016 20:47
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.