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

  • 相关阅读:
    查询数据库中的相同值得所有表跟字段【存储过程】
    一些常用的SQL语句
    添加网站本地映射
    ReSharper 2016.3.2 Ultimate 官方最新破解版
    C# 利用VS自带的WSDL工具生成WebService服务类
    Linux环境下docker搭建wordpress应用
    Appium环境搭建
    内联以及外联css,js文件的理解
    前端雅虎23条理解
    docker安装和使用
  • 原文地址:https://www.cnblogs.com/student-note/p/12469241.html
Copyright © 2011-2022 走看看