using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Prototype
{
    abstract class Prototype
    {
        private string _id;
        public Prototype(string id)
        {
            _id = id;
        }
        public string Id
        {
            get { return _id; }
        }
        public abstract Prototype Clone();
    }
    class ConcretePrototype1:Prototype
    {
        public ConcretePrototype1(string id):base(id)
        {

        }
        public override Prototype Clone()
        {
            return (Prototype)this.MemberwiseClone();
        }
    }
    class ConcretePrototype2 : Prototype
    {
        public ConcretePrototype2(string id) :base(id)
        {

        }
        public override Prototype Clone()
        {
            return (Prototype)this.MemberwiseClone();
        }
    }
}
