///Wrap an object if wrapper available, within provided environment public static void Wrap(object o, Environment env) { var wrapper = DecoratorFactory.GetDecorator <IExpressionDecorator>(o); if (wrapper != null) { wrapper.Wrap(env); } }
public void DoWork() { var decoraFactory = new DecoratorFactory(new BatchProcess()); decoraFactory.DecoratorsSequence = new List <DecoratorType>() { DecoratorType.FileDownload, DecoratorType.ExecuteSP, DecoratorType.FileUpload }; decoraFactory.GetBatchProcess().DoWork(); }
public IActionResult AESCrypFile(FileRequestEntity fileRequestEntity) { //設置初始化的被裝飾者 DecoratorFactory factory = new DecoratorFactory(new FileProcess()); //設置裝飾的順序 factory.SetProcess(new AESCrypProcess()); IProcess process = factory.GetProcess(); process.Write(fileRequestEntity.FilePath, fileRequestEntity.Content); return(this.Ok()); }
public void ShouldReturnFizzBuzz15() { var factory = new DecoratorFactory(); var range = new Tuple <int, int>(1, 100); var numberWordPairs = new Queue <Tuple <int, string> >(); numberWordPairs.Enqueue(new Tuple <int, string>(3, "Fizz")); numberWordPairs.Enqueue(new Tuple <int, string>(5, "Buzz")); var numberGenerator = factory.GetDecoratedNumberGenerator(range, numberWordPairs); var results = numberGenerator.GetNumberValuePairs().ToList(); Assert.AreEqual("Fizz Buzz", results[14].Value); }
public IActionResult ZipFile(FileRequestEntity fileRequestEntity) { //設置初始化的被裝飾者 DecoratorFactory factory = new DecoratorFactory(new FileProcess()); //設置裝飾的順序 factory.SetProcess(new ZipProcess() { ZipFileName = "susu.zip", PassWord = "******" }); IProcess process = factory.GetProcess(); process.Write(fileRequestEntity.FilePath, fileRequestEntity.Content); return(this.Ok()); }
public static async Task DecorateAsync(Chunk chunk, double[,] terrainHeightMap, OverworldTerrain ot, World world) { var noise = new TerrainNoise(ot.settings); for (int x = 0; x < 16; x++) { for (int z = 0; z < 16; z++) { var b = ChunkBiome.GetBiome((chunk.X << 4) + x, (chunk.Z << 4) + z, ot); var blockPos = new Vector(x, (int)terrainHeightMap[x, z], z); IDecorator decorator = DecoratorFactory.GetDecorator(b, chunk, blockPos, noise); decorator.Decorate(); await GenerateTreesAsync(world, blockPos + (chunk.X << 4, 0, chunk.Z << 4), decorator.Features, noise); await GenerateFloraAsync(world, blockPos + (chunk.X << 4, 0, chunk.Z << 4), decorator.Features, noise); } } }
static void Main(string[] args) { var start = 1; var end = 100; var queue = new Queue <Tuple <int, string> >(); queue.Enqueue(Tuple.Create(3, "FiZZ")); queue.Enqueue(Tuple.Create(5, "Buzz")); var facroty = new DecoratorFactory(); var numberGerator = facroty.GetDecoratedNumberGenerator(Tuple.Create(start, end), queue); foreach (var word in numberGerator.GetNumberValuePairs()) { Console.WriteLine(word.Value); } }
/// <summary> /// 获取所有的装饰器 /// </summary> /// <returns></returns> private static List <IDecorator> GetDecorators <T>() where T : class, new() { List <IDecorator> decorators = new List <IDecorator>(); List <BaseDecorateAttribute> attrs = new List <BaseDecorateAttribute>(); TypeDecoratorInfo typeDecoratorInfo = TypeDecoratorInfoFactory.CreateInstance(typeof(T)); attrs.AddRange(typeDecoratorInfo.TypeDecoratorAttrs); typeDecoratorInfo.PropertyDecoratorInfos.ForEach(a => attrs.AddRange(a.DecoratorAttrs)); attrs.Distinct(new DecoratorAttributeComparer()).ToList().ForEach (a => { var decorator = DecoratorFactory.CreateInstance(a.GetType()); if (decorator != null) { decorators.Add(decorator); } }); return(decorators); }
public INode CreateRandomSelectorTest() { NodeFactory factory = FactoryManager.Instance.GetFactory <NodeFactory>(FactoryType.Node); ConditionFactory conditionFactory = FactoryManager.Instance.GetFactory <ConditionFactory>(FactoryType.Condition); DecoratorFactory decoratorFactory = FactoryManager.Instance.GetFactory <DecoratorFactory>(FactoryType.Decorator); var rootNode = factory.Create <RootNode>(NodeType.Root); RandomSelectorNode randomSelectorNode = factory.Create <RandomSelectorNode>(NodeType.RandomSelector); DecoratorNode decoratorNode = factory.Create <DecoratorNode>(NodeType.Decorator); FalseDecorator not = decoratorFactory.Create <FalseDecorator>(DecoratorType.False); decoratorNode.SetDecoratable(not); var actionNode1 = CreateSampleActionNode1(); var actionNode2 = CreateSampleActionNode1(); var actionNode3 = CreateSampleActionNode2(); randomSelectorNode.AddNode(actionNode1); randomSelectorNode.AddNode(actionNode2); decoratorNode.AddNode(actionNode3); randomSelectorNode.AddNode(decoratorNode); rootNode.AddNode(randomSelectorNode); return(rootNode); }
public TestComponentFactoryWithObjectLoaderDecorator(DecoratorFactory factory) { _factory = factory; }
public void Build() { Core.IBreath src = this.Tag; _node.Text = src.ToString(); Core.IEntry entry = src as Core.IEntry; // entry if (entry != null) { ISceneDecorator deco = DecoratorFactory.GetEntryDecorator(entry); string image = (entry.Enabled && entry.IsVisible()) ? "entry.png" : "entry_gray.png"; _node.ImageKey = image; _node.SelectedImageKey = image; } // scene if (entry != null) { TreeNode node = this.Find("scene"); if (node == null) { node = _node.Nodes.Insert( 0, "scene", "描画情報", "scene.png", "scene.png" ); } ISceneDecorator elm = entry.GetElement <ISceneDecorator>(); node.Tag = elm; node.Nodes.Clear(); string icon = "decoration.png"; foreach (IDecoration d in elm.Decorations) { string name = d.GetType().Name; TreeNode dec = node.Nodes.Add(name, name, icon, icon); dec.Tag = d; } } // entity if (entry != null) { TreeNode node = this.Find("entity"); if (entry.Entity != null) { string name = entry.Entity.GetType().Name; if (node == null) { node = _node.Nodes.Insert( 1, "entity", name, "entity.png", "entity.png"); } else if (node.Text != name) { node.Text = name; } node.Tag = entry.Entity; } else if (node != null) { _node.Nodes.Remove(node); } } // 不要な TreeNode を削除 { List <TreeNode> removing = new List <TreeNode>(); foreach (TreeNode node in _node.Nodes) { if (node.Name == "scene") { continue; } if (node.Name == "entity") { continue; } TreeNodeBuilder tnb = (TreeNodeBuilder)node.Tag; Core.IEntry e = tnb.Tag as Core.IEntry; if (e == null || !this.SubEntries.Contains(e.ID)) { removing.Add(node); } } foreach (TreeNode node in removing) { _node.Nodes.Remove(node); } } }