gpt4 book ai didi

c# - C#中的原型(prototype)设计模式

转载 作者:太空宇宙 更新时间:2023-11-03 21:08:57 24 4
gpt4 key购买 nike

谁能解释为什么我们需要在原型(prototype)模式中使用 MemberwiseClone()?

public abstract class AProtagonistEx
{
int m_health;
int m_felony;
double m_money;
// This is a reference type now
AdditionalDetails m_details = new AdditionalDetails();

public int Health
{
get { return m_health; }
set { m_health = value; }
}

public int Felony
{
get { return m_felony; }
set { m_felony = value; }
}

public double Money
{
get { return m_money; }
set { m_money = value; }
}

public AdditionalDetails Details
{
get { return m_details; }
set { m_details = value; }
}

public abstract AProtagonistEx Clone();
}



class CJEx : AProtagonistEx
{
public override AProtagonistEx Clone()
{
**return this.MemberwiseClone() as AProtagonistEx;**
}
}

默认情况下,子类可以访问父类的所有属性和方法。那么这种模式的需要是什么?

最佳答案

Prototype Design Pattern是关于实例,而不是关于类。 CJEx 类的实例确实通过继承继承了其基类的所有属性和方法。然而,原型(prototype)模式关注的是属性的值,而不仅仅是对象的属性。

其实这就是原型(prototype)模式和abstract factory pattern的区别: 原型(prototype)模式按照在原型(prototype)对象中设置的方式预填充您的属性,而抽象工厂为您提供一个对象,其属性设置为默认值或您在调用中提供的值。

关于c# - C#中的原型(prototype)设计模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39052236/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com