zoukankan      html  css  js  c++  java
  • DOTA版设计模式——外观模式

    外观模式,不知道你是否会碰到这样的场景,公司要开会了,由你负责布置会场,你需要做的工作有:
    1.把窗帘拉下来。
    2.摆好椅子。
    3.降下投影幕布。
    4.打开投影仪。
    5...............
    太烦了,有时你甚至少做了一样,别怕,如果有了外观模式就可以高枕无忧了。简单的说,外观模式就是把1~5条甚至更多的操作抽象为一个操作,那就是------------开会
    在本例中,外观模式就是把游戏初始化的操作合并为一个操作,Game类中的GameStart。
    此模式比较好理解,具体请see完整代码哟。
    测试代码:
                DotaPatternLibrary.Facade.Game game = new DotaPatternLibrary.Facade.Game();
                game.GameStart();
    完整代码:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    using DotaCommon;

    namespace DotaPatternLibrary.Facade
    {
        
    public class Game
        {
            
    public void GameStart()
            {
                HeroFactory heroFactory 
    = new HeroFactory();
                heroFactory.CreateModel();
                heroFactory.SetSkill();
                heroFactory.Maps();
                BotWildNPC botWildNPC 
    = new BotWildNPC();
                botWildNPC.CreateModel();
                botWildNPC.Maps();
                Music music 
    = new Music();
                music.SelectMusic();
                music.Play();
                Terrain terrain 
    = new Terrain();
                terrain.RandomTerrain();
                terrain.Maps();
            }
        }

        
    internal class HeroFactory
        {
            
    public void CreateModel()
            {
                LandpyForm.Form.OutputResult(
    "CreateHeroModel");
            }

            
    public void SetSkill()
            {
                LandpyForm.Form.OutputResult(
    "SetHeroSkill");
            }

            
    public void Maps()
            {
                LandpyForm.Form.OutputResult(
    "MapsHero");
            }
        }

        
    internal class BotWildNPC
        {
            
    public void CreateModel()
            {
                LandpyForm.Form.OutputResult(
    "CreateBotWildNPCModel");
            }

            
    public void Maps()
            {
                LandpyForm.Form.OutputResult(
    "MapsBotWildNPC");
            }
        }

        
    internal class Music
        {
            
    public void SelectMusic()
            {
                LandpyForm.Form.OutputResult(
    "SelectMusic");
            }

            
    public void Play()
            {
                LandpyForm.Form.OutputResult(
    "MusicPlay");
            }
        }

        
    internal class Terrain
        {
            
    public void RandomTerrain()
            {
                LandpyForm.Form.OutputResult(
    "RandomTerrain");
            }

            
    public void Maps()
            {
                LandpyForm.Form.OutputResult(
    "MapsTerrain");
            }
        }
    }
    敬告

    作者:pangxiaoliang
    出处:http://www.cnblogs.com/pangxiaoliang
    本文版权归pangxiaoliang和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,谢谢合作。
  • 相关阅读:
    [LeetCode]题解(python):094-Binary Tree Inorder Traversal
    [LeetCode]题解(python):093-Restore IP Addresses
    [LeetCode]题解(python):092-Reverse Linked List II
    [LeetCode]题解(python):091-Decode Ways
    第二阶段团队冲刺1
    进度总结报告十三
    梦断代码阅读笔记02
    第一阶段对各组的意见评价
    进度总结报告十二
    软件开发冲刺10
  • 原文地址:https://www.cnblogs.com/pangxiaoliang/p/1531152.html
Copyright © 2011-2022 走看看