首页 > 其他分享 >05.原型模式

05.原型模式

时间:2022-11-15 22:57:08浏览次数:43  
标签:MonkeyKing string 05 Clone MonkeyKingPrototype 模式 原型 copy public

原型模式

Prototype Pattern

用于创建重复的对象,同时又能保证性能。

当需要创建一个与已有对象类似的对象,或者当创建对象的成本比克隆更高时,使用原型模式

通过实现Clone方式生成新的实例,根据需要选择深copy和浅copy

namespace 原型模式
{
    /// <summary>
    /// 当创建一个类的实例的过程很昂贵或很复杂,
    /// 并且我们需要创建多个这样类的实例时,
    /// 如果我们用new操作符去创建这样的类实例,
    /// 这未免会增加创建类的复杂度和耗费更多的内存空间,
    /// 因为这样在内存中分配了多个一样的类实例对象
    /// </summary>
    public abstract class MonkeyKingPrototype
    {
        public string Id { get; set; }
        public MonkeyKingPrototype(string id)
        {
            this.Id = id;
        }

        public abstract MonkeyKingPrototype Clone();
    }

    public class MonkeyKing : MonkeyKingPrototype
    {
        public MonkeyKing(string id) : base(id) { }

        public override MonkeyKingPrototype Clone()
        {
            //深copy 和 浅copy
            return (MonkeyKingPrototype)this.MemberwiseClone();
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            MonkeyKing monkeyKing = new MonkeyKing("齐天大圣");

            MonkeyKingPrototype prototype1 = monkeyKing.Clone();

            MonkeyKingPrototype prototype2 = monkeyKing.Clone();

            Console.WriteLine("Hello World!");
        }
    }
}


标签:MonkeyKing,string,05,Clone,MonkeyKingPrototype,模式,原型,copy,public
From: https://www.cnblogs.com/thomerson/p/16894336.html

相关文章

  • js闭包问题、js事件循环机制、async与defer、同步与异步模式
    js闭包问题定义:闭包就是有权访问其他函数作用域内的其他变量的函数。实现机制:在访问变量的函数中return一个匿名函数,这时匿名函数的作用域链将指向该函数的作用域。!!!由于......
  • 050_Callable
    目录Callable简介测试注意点Callable简介测试注意点:::info两个线程只打印了一次call(),是因为结果会被缓存,提高效率:::......
  • (七)原型模式
    1概述原型模式(Prototype),用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。原型模式其实就是从一个对象再创建另外一个可定制的对象,而且不需知道任何......
  • HCIP-ICT实战进阶05-路由策略与策略路由
    HCIP-ICT实战进阶05-路由策略与策略路由0前言什么是路由策略?基于报文的目的IP地址进行路由表查找,之后转发数据;针对控制平面,为路由协议和路由表服务,针对路由......
  • rabbitmq集群部署-镜像模式
    一、环境RabbitMQ与Erlang的兼容关系详见:https://www.rabbitmq.com/which-erlang.htmlrabbitmq集群最好是奇数节点,所以一般需要3台设备以上。操作系统:CentOS7Erlang:erl......
  • (五)工厂方法模式
    工厂方法模式(FactoryMethod),定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。与简单工厂模式的区别:简单工厂模式的最大......
  • js对象和原型、原型链的关系
    JS的原型、原型链一直是比较难理解的内容,不少初学者甚至有一定经验的老鸟都不一定能完全说清楚,更多的"很可能"是一知半解,而这部分内容又是JS的核心内容,想要技术进阶的话肯......
  • js异步编程的三种模式
    写在前面javascript语言的执行环境是"单线程"(singlethread),就是指一次只能完成一件任务。如果有多个任务,就必须排队,等前面一个任务完成,再执行后面一个任务,以此类推。......
  • RabbitMq简单模式
    RabbitMq简单模式定义一个生产者,负责发送消息到队列中/***@authorzjh*生产者发信息*/publicclassProducer{/***队列名称*/public......
  • Qt音视频开发02-海康sdk解码(支持句柄/回调/gpu模式/支持win/linux)
    一、前言为何还要选用使用海康sdk,之前不是ffmpeg已经牛皮吹上天了吗?这个问题问得好,那是因为无论ffmpeg也好还是vlc/mpv之类的,都是实现的播放相关,不同的监控硬件厂家对应设......