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

  1. 《设计模式》系列序——写给未来的自己
  2. 工厂方法模式(Factory Method)-创建型模式第一篇
  3. 抽象工厂模式(Abstract Factory Pattern)-创建型模式第二篇
  4. 单例模式(Singleton Pattern)-创建型模式第三篇
  5. 建造者模式(Builder Pattern)-创建型模式第四篇
  6. 原型模式(Prototype Pattern)-创建型模式第五篇
  7. 装饰者模式 (Decorator Pattern)-结构型模式第一篇
  8. 组合模式 (Composite Pattern)-结构型模式第二篇
  9. 适配器模式 (Adapter Pattern)-结构型模式第三篇
  10. 代理模式 (Proxy Pattern)-结构型模式第四篇
  11. 桥接模式 (Bridge 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 };
        }
    }
}

注释:

输出:

One Reply to “原型模式(Prototype Pattern)-创建型模式第五篇”

Leave a Reply

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