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;
    
        }

  • 相关阅读:
    python实训day8
    python实训day7
    python实训day6
    python实训day5
    python实训day4
    python实训day3
    python实训day2
    python实训day1
    MyBatis入门-insert标签介绍及使用
    Shell入门-Shell脚本开发规范
  • 原文地址:https://www.cnblogs.com/student-note/p/12469241.html
Copyright © 2011-2022 走看看