• 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和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,谢谢合作。
  • 相关阅读:
    团队冲刺第九天
    团队冲刺第七天
    CSS 居中大全
    jquery 中fadeIn,fadeOut动画
    使用Fiddler提高前端工作效率 (实例篇)
    使用Fiddler提高前端工作效率 (介绍篇)
    python的一些学习资料(持续更新中)
    Python脚本运行出现语法错误:IndentationError: unindent does not match any outer indentation level
    setuptools,pip,install,UnicodeDecodeError: 'ascii' codec can't decode byte.原因和解决方案
    express cookie-session解惑
  • 原文地址:https://www.cnblogs.com/pangxiaoliang/p/1531152.html
Copyright © 2020-2023  润新知