作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个布局管理器类,这个类是为设置数据网格布局而设计的。代码:
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/
我是一名优秀的程序员,十分优秀!