zoukankan      html  css  js  c++  java
  • 享元模式

         具体就是在工厂中保存对象的引用,通过共享对象来减少内存的开销.对象之间的差异使用外部对象来处理.

    class Program
        {
            /// <summary>
            /// 享元模式例子
            /// </summary>
            /// <param name="args"></param>
            static void Main(string[] args)
            {
                FlyWeightFactory factory = new FlyWeightFactory();
                var whiteChessman = factory.GetChessman("");
                var blockCheeman = factory.GetChessman("");
                whiteChessman.Use(new ChessmanPostion() { X = 1, Y = 4 });
                blockCheeman.Use(new ChessmanPostion() { X = 1, Y = 2 });
                Console.Read();
            }
        }
        /// <summary>
        /// 享元工厂(这里可将工厂设置为静态)
        /// </summary>
        public class FlyWeightFactory
        {
            Dictionary<string, Chessman> _dicChessMan = new Dictionary<string, Chessman>();
            public FlyWeightFactory()
            {
                _dicChessMan.Add("", new Chessman() { Color = "" });
                _dicChessMan.Add("", new Chessman() { Color = "" });
            }
            public Chessman GetChessman(string key)
            {
                return _dicChessMan[key];
            }
        }
    
        public interface IFlyWeight
        {
            void Use(ChessmanPostion chessmanPostion);
        }
        /// <summary>
        /// 棋子
        /// </summary>
        public class Chessman : IFlyWeight
        {
    
            public string Color { get; set; }
            public void Use(ChessmanPostion chessmanPostion)
            {
                Console.WriteLine($"{Color}  X:{chessmanPostion.X}  Y:{chessmanPostion.Y}");
            }
        }
        /// <summary>
        /// 棋子位置(在这里棋子是外部状态)
        /// </summary>
        public class ChessmanPostion
        {
            public int X;
            public int Y;
    
        }

  • 相关阅读:
    Java类的静态块の二
    Java类的静态块の一
    Eclipse优化工具Optimizer for Eclipse
    C#实现MD5WITHRSA签名
    Ubuntu 初始化Root账户密码
    shell连接本机虚拟机
    Nodejs的Express完成安装指导
    node.js之Windows 系统下设置Nodejs NPM全局路径
    Unicode, UTF-8, GBK, ASCII的区别
    BootstrapValidation一些tips
  • 原文地址:https://www.cnblogs.com/student-note/p/12469241.html
Copyright © 2011-2022 走看看