原型模式(Prototype Pattern)-创建型模式第五篇

距离发布上篇软件设计模式文章《建造者模式》稍稍地已经过去两个多月,今天来谈一下第五个创建型模式,这也将是最后一个创建型模式——原型模式(Prototype Pattern)。

定义:

Prototype模式,通过将对象自身进行复制来创建新的对象。多么简单的定义,该模式也很简单。

解决的问题:

  1. 在运行时如何动态创建一个对象的副本

怎么去解决:

  1. 通过定义一个含有Clone方法的Prototype接口
  2. 具体的实现类通过继承Prototype接口来创建自身的复制品

UML:

实例:

using System;
 
namespace PrototypePattern
{
    internal class Program
    {
        private static void Main(string[] args)
        {
            IProduct product = new ConcreteProduct() { Name = "LED Displayer" };
            var clonedProduct = product.Clone();
            Console.WriteLine($"This is original object: {product.Name}");
            Console.WriteLine($"This is cloned object: {clonedProduct.Name}");
            Console.WriteLine($"The both objects is the same or not? {product == clonedProduct}");
            Console.ReadKey();
        }
    }
 
    public interface IPrototype<T>
    {
        T Clone();
    }
 
    public interface IProduct : IPrototype<IProduct>
    {
        string Name { get; set; }
    }
 
    public class ConcreteProduct : IProduct, IPrototype<IProduct>
    {
        public string Name { get; set; }
 
        public IProduct Clone()
        {
            return new ConcreteProduct() { Name = Name };
        }
    }
}

注释:

输出:

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.