Dobrý den,
zajímalo by mě jestli je možné nějakým způsobem definovat, aby každá odvozená třída od BarcodeBase měla statickou metodu IsValid. Všude čtu, že to nejde a proto mě zajímá jestli něco podobného neřeší nějaký návrhový vzor. Je jednoduché tuto funkci připsat do každé odvozené třídy a pak jí volat, ale snad to půjde vyřešit nějak lépe :) - vůbec netuším jak a nějak cítím, že se na problém koukám ze špatného úhlu :)
Děkuji
Miloš
public interface IBarcode
{
string GTIN { get; }
}
public abstract class BarcodeBase : IBarcode
{
protected int symbology;
public string GTIN { get; protected set; }
public BarcodeBase(int symbology, string barcodeText)
{
this.symbology = symbology;
GTIN = barcodeText;
}
}
public class EAN128 : BarcodeBase
{
public EAN128(int symbology, string barcodeText) :
base(symbology, barcodeText)
{
}
public static bool IsValid(int symbology, string barcodeText)
{
return (symbology == 15);
}
}
public class EAN13 : BarcodeBase
{
public EAN13(int symbology, string barcodeText) :
base(symbology, barcodeText)
{
}
public static bool IsValid(int symbology, string barcodeText)
{
return (symbology == 5);
}
}
public static class BarcodeMgt
{
public static IBarcode GetBarcode(int symbology, string barcodeText)
{
if (EAN128.IsValid(symbology, barcodeText))
return new EAN128(symbology, barcodeText);
if (EAN13.IsValid(symbology, barcodeText))
return new EAN13(symbology, barcodeText);
return null;
}
}