public Validator() { _validationStrategyFactory = ValidationStrategyFactory.Instance; _nodeFactory = NodeFactory.Instance; }
public ViewModelLocator() { ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default); // register file strategies FileStrategyFactory fileStrategyFactory = FileStrategyFactory.Instance; fileStrategyFactory.RegisterStrategy("json", new JsonFileStrategy()); fileStrategyFactory.RegisterStrategy("txt", new TxtFileStrategy()); // register node types NodeFactory nodeFactory = NodeFactory.Instance; nodeFactory.RegisterNode <InputHigh>("INPUT_HIGH"); nodeFactory.RegisterNode <InputLow>("INPUT_LOW"); nodeFactory.RegisterNode <Probe>("PROBE"); nodeFactory.RegisterNode <NotGate>("NOT"); nodeFactory.RegisterNode <AndGate>("AND"); nodeFactory.RegisterNode <NandGate>("NAND"); nodeFactory.RegisterNode <NorGate>("NOR"); nodeFactory.RegisterNode <OrGate>("OR"); nodeFactory.RegisterNode <XorGate>("XOR"); // Validation strategies ValidationStrategyFactory validationStrategyFactory = ValidationStrategyFactory.Instance; // INode validation validationStrategyFactory.RegisterStrategy <INode>(new ValidGatesValidation()); validationStrategyFactory.RegisterStrategy <INode>(new MinNodeValidation()); validationStrategyFactory.RegisterStrategy <INode>(new DuplicateGateValidation()); validationStrategyFactory.RegisterStrategy <INode>(new LoopValidation()); // StartPoint validation validationStrategyFactory.RegisterStrategy <StartPoint>(new MinOutputsValidation(0)); // Probe validation validationStrategyFactory.RegisterStrategy <Probe>(new MinInputsValidation(1)); // AND gate validation validationStrategyFactory.RegisterStrategy <AndGate>(new MinInputsValidation(2)); validationStrategyFactory.RegisterStrategy <AndGate>(new MinOutputsValidation(1)); // NAND gate validation validationStrategyFactory.RegisterStrategy <NandGate>(new MinInputsValidation(2)); validationStrategyFactory.RegisterStrategy <NandGate>(new MinOutputsValidation(1)); // NOR gate validation validationStrategyFactory.RegisterStrategy <NorGate>(new MinInputsValidation(2)); validationStrategyFactory.RegisterStrategy <NorGate>(new MinOutputsValidation(1)); // NOT gate validation validationStrategyFactory.RegisterStrategy <NotGate>(new MinInputsValidation(1)); validationStrategyFactory.RegisterStrategy <NotGate>(new MaxInputsValidation(1)); // OR gate validation validationStrategyFactory.RegisterStrategy <OrGate>(new MinInputsValidation(2)); validationStrategyFactory.RegisterStrategy <OrGate>(new MinOutputsValidation(1)); // XOR gate validation validationStrategyFactory.RegisterStrategy <XorGate>(new MinInputsValidation(2)); validationStrategyFactory.RegisterStrategy <XorGate>(new MinOutputsValidation(1)); SimpleIoc.Default.Register <CircuitViewModel>(); }