如何使用 OOP 获取行为集的差异
How to obtain difference of sets like behaviour with OOP
我需要类似于集合论差分运算符的行为 \
。
我正在尝试获得某种 friend
class 行为,因为我遇到以下情况:
public interface IRead
{
List<string> GetInnerResource();
}
public interface IWrite()
{
bool SetInnerResource();
}
public interface IFull:IRead,IWrite{
void SomeMethod();
}
public Consumer:IFull // IFull \ IWrite
{
private IFull access; // IFull\IWrite
public List<string> GetInnerResource()=>this.access.GetInnerResource();
public void SomeMethod()=>this.acces.SomeMethod(); // i need this
public bool SetInnerResource(){...}//--i do not want this here !
}
public Admin:IFull
{
private IFull access;
public List<string> GetInnerResource()=>this.access.GetInnerResource();
public bool SetInnerResource()=>this.access.SetInnerResource();
public void SomeMethod()=>this.access.SomeMethod();
}
如您所见,我有 3
个接口(IRead
、IWrite
、IFull
),其中第三个接口派生自第一个 2
还有另一种方法。
我有两个 classes Consumer
和 Admin
其中:
-Consumer needs to implement IFull \ IWrite
-Admin needs IFull
因为我的两个具体 classes 都将实现委托给内部字段
问题在于 Consumer
class 的内部字段,因为它需要 something
实现 IFull\IWrite
通常在 C++
中,我会用 friend
class 来解决这个问题,它可以完全访问 class 而使用 Read
全部 others.Here 我做不到。
我有什么选择?
我需要一个接口 ISomething: {IFull\IWrite}
用于 Consumer
class
P.S IFull\IWrite=IRead + [methods defined only in IFull]
一个快速简单的解决方案是将 IFull 接口的层次结构打散,并有 3 个单独的接口,可以根据 Consumer 或 Admin 的使用需要派生 类
我需要类似于集合论差分运算符的行为 \
。
我正在尝试获得某种 friend
class 行为,因为我遇到以下情况:
public interface IRead
{
List<string> GetInnerResource();
}
public interface IWrite()
{
bool SetInnerResource();
}
public interface IFull:IRead,IWrite{
void SomeMethod();
}
public Consumer:IFull // IFull \ IWrite
{
private IFull access; // IFull\IWrite
public List<string> GetInnerResource()=>this.access.GetInnerResource();
public void SomeMethod()=>this.acces.SomeMethod(); // i need this
public bool SetInnerResource(){...}//--i do not want this here !
}
public Admin:IFull
{
private IFull access;
public List<string> GetInnerResource()=>this.access.GetInnerResource();
public bool SetInnerResource()=>this.access.SetInnerResource();
public void SomeMethod()=>this.access.SomeMethod();
}
如您所见,我有 3
个接口(IRead
、IWrite
、IFull
),其中第三个接口派生自第一个 2
还有另一种方法。
我有两个 classes Consumer
和 Admin
其中:
-Consumer needs to implement IFull \ IWrite
-Admin needs IFull
因为我的两个具体 classes 都将实现委托给内部字段
问题在于 Consumer
class 的内部字段,因为它需要 something
实现 IFull\IWrite
通常在 C++
中,我会用 friend
class 来解决这个问题,它可以完全访问 class 而使用 Read
全部 others.Here 我做不到。
我有什么选择?
我需要一个接口 ISomething: {IFull\IWrite}
用于 Consumer
class
P.S IFull\IWrite=IRead + [methods defined only in IFull]
一个快速简单的解决方案是将 IFull 接口的层次结构打散,并有 3 个单独的接口,可以根据 Consumer 或 Admin 的使用需要派生 类