gpt4 book ai didi

oop - OO设计原则——开闭原则

转载 作者:行者123 更新时间:2023-12-01 12:46:01 25 4
gpt4 key购买 nike

我有一个布局管理器类,这个类是为设置数据网格布局而设计的。代码:

class LayoutManager
{
private object _target;

public LayoutManager(object aDataGrid)
{
_target = aDataGrid;
}

public void SaveLayout(string strProfileID)
{
}

public void LoadLayout(string strProfileID)
{
}

//in future I might add below function
public void ResetLayout()//OtherFunction0
{
}

public void OtherFunction1()
{
}

public void OtherFunction2()
{
}


}

根据 OCP,“一个类应该对扩展开放,但对修改关闭”。如果我在 LayoutManager 类中添加新功能,此操作是否违反了 OCP?如果是,设计类的正确方法是什么?

最佳答案

我不认为向类中添加方法通常会违反 OCP 原则,因为这实际上扩展了类(class)的行为。问题是如果你改变现有的行为。这样,如果您添加的方法上的代码可能会更改现有方法的行为(因为它改变了对象的状态)这将是违规的。

遵循 SOLID 原则的正确方法是制作一个界面:ILayoutManager 具有您想要的界面,以及记录在案的行为。

LayoutManager 类将实现此接口(interface)。其他新方法可能会添加到新接口(interface)中,比如 ILayoutFoo 或添加到现有接口(interface)中,只要它们不会破坏现有方法中记录的行为的契约。

关于oop - OO设计原则——开闭原则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15917126/

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