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

  • 相关阅读:
    hdu 1240 Asteroids!
    hdu 1253 胜利大逃亡
    hdu 1035 Robot Motion
    hdu 1181 变形课
    hdu 1548 A strange lift
    DFS Sum It Up
    hdu 3278 Catch That Cow
    hdu 1312 Red and Black
    ACM菜鸟
    eclipse新建安卓项目点击finish后窗口无法关闭
  • 原文地址:https://www.cnblogs.com/student-note/p/12469241.html
Copyright © 2011-2022 走看看