• 浅尝DesignPattern_Prototype


    UML:

    Sample:

  • Prototype  ()
    • declares an interface for cloning itself
    • 定义复制对象的接口
  • ConcretePrototype  ()
    • implements an operation for cloning itself
    • 实现复制自己的操作
  • Client  ()
    • creates a new object by asking a prototype to clone itself
    • 通过访问prototype来创建一个新的对象来复制

    Prototype:

    1 abstract class Prototype
    2 {
    3 private string _id;
    4 public Prototype(string id)
    5 {
    6 this._id = id;
    7 }
    8 public string Id
    9 {
    10 get { return _id; }
    11 }
    12 public abstract Prototype Clone();
    13 }

    ConcretePrototype1:

    1 class ConcretePrototype1:Prototype
    2 {
    3 public ConcretePrototype1(string id)
    4 : base(id)
    5 { }
    6
    7 public override Prototype Clone()
    8 {
    9 return (Prototype)this.MemberwiseClone();
    10 }
    11 }
    ConcretePrototype2:
    1 class ConcretePrototype2
    2 {
    3 public ConcretePrototype2(string id)
    4 : base(id)
    5 { }
    6 public override Prototype Clone()
    7 {
    8 return (Prototype)this.MemberwiseClone();
    9 }
    10 }
    Program:
    1 #region Prototype
    2 ConcretePrototype1 p1 = new ConcretePrototype1("I");
    3 ConcretePrototype1 c1 = (ConcretePrototype1)p1.Clone();
    4 Console.WriteLine("Cloned: {0}", c1.Id);
    5 ConcretePrototype2 p2 = new ConcretePrototype2("II");
    6 ConcretePrototype2 c2 = (ConcretePrototype2)p2.Clone();
    7 Console.WriteLine("Cloned: {0}", c2.Id);
    8 Console.ReadKey();
    9 #endregion
    原型模式就是请求一个原型来克隆对象自身
  • 相关阅读:
    stylus使用文档总结:选择器+变量+插值+运算符+混合书写+方法
    vue项目配置使用flow类型检查
    项目中存在的问题
    坚持
    Enum枚举类使用集合
    JS 随机数字抽签
    【转】Basic C# OOP Concept
    EF异常:WebForm、Console、Winform层不引入EF报错
    EF异常:“System.InvalidOperationException”类型的未经处理的异常在 mscorlib.dll 中发生
    WebServices中使用Session
  • 原文地址:https://www.cnblogs.com/TivonStone/p/1721590.html
  • Copyright © 2020-2023  润新知