zoukankan      html  css  js  c++  java
  • 二十三种设计模式之原型模式的C#实现

    原型模式就是通过拷贝快速创建一个新的对象 

    本例UML如图

    ColorBase

    [Serializable]
        public abstract class ColorBase
        {
            public int R = 0;
            public int G = 0;
            public int B = 0;
            public virtual ColorBase Clone()
            {
                return this;
            }
    
            public virtual void ShowMe()
            {
                Console.WriteLine(string.Format(" r={0} g={1} b={2}", R, G, B));
            }
        }
    

      RGBAColor

    [Serializable]
        public class RGBAColor : ColorBase
        {
            public override ColorBase Clone()
            {
                ColorBase color;
                MemoryStream memoryStream = new MemoryStream();
                BinaryFormatter formatter = new BinaryFormatter();
                formatter.Serialize(memoryStream, this);
                memoryStream.Position = 0;
                color = (RGBAColor)formatter.Deserialize(memoryStream);
                return color;
            }
        }
    

      ColorManager

     public class ColorManager
        {
            RGBAColor rgbColor = new RGBAColor();
    
            public ColorBase ColorBase
            {
                get
                {
                    throw new System.NotImplementedException();
                }
                set
                {
                }
            }
        
            public ColorBase GetNewColor()
            {
                return rgbColor.Clone();
            }
        }
    

      Main方法中进行测试

    static void Main(string[] args)
            {
                ColorManager colorManager = new ColorManager();
                ColorBase red = colorManager.GetNewColor();
                red.R = 255;
    
                ColorBase green = colorManager.GetNewColor();
                green.G = 255;
    
                ColorBase blue = colorManager.GetNewColor();
                blue.B = 255;
    
                red.ShowMe();
                green.ShowMe();
                blue.ShowMe();
    
                Console.Read();
            }
    

      执行结果

  • 相关阅读:
    python模拟shell
    10.LIKE 操作符
    9.TOP 子句--mysql limit
    8.INSERT INTO 语句 UPDATE 语句
    7.ORDER BY 子句
    6.AND & OR 运算符
    5.WHERE 子句
    4.SELECT DISTINCT 语句
    3.SELECT 语句
    2.sql分类
  • 原文地址:https://www.cnblogs.com/devgis/p/6710844.html
Copyright © 2011-2022 走看看