我在扩展应用程序时遇到问题。
这是一个考勤记录系统。目前,每个员工都通过一张带有二维码的卡记录考勤。现在他们想加入指纹识别,直到他们要求两种形式的识别必须在系统中共存时才出现问题。因此,系统必须能够感知员工的二维码,以及他的指纹。
通过 .equalsTo(id) 方法在 QrIdStrategy 中修复它的方法是:
equalsTo(id){
if (id == isKindOf (QrIdStrategy))
if (this.getEmployeeId () == id.getEmployeeId ())
return true;
return false;
}
但是我知道询问对象的类是一种不好的做法,并且不想这样做。我该如何解决?
我想到了访问者模式,但是我仍然有比较两个不同类型的类的问题(因为系统可以扫描这两种类型中的任何一种)
最佳答案
也许第一张图已经显示了我要说的内容,但这归结为多态性。
创建一个抽象类(例如 IdentificationStrategy
使用一些方法,如 equlasTo()
)。派生两个类:QRStrategy
和 FingerPrintStrategy
来自 IdentificationStrategy
并实现equlasTo()
他们每个人的方法。
现在,代码中有一个地方可以让您知道是否要创建 QRStrategy
的实例。或 FingerPrintStrategy
.只需将该对象的一个实例分配给 IdentificationStrategy
的变量即可类型(例如,让我们将其命名为 'foo' )。当您调用equlasTo()
'foo' 上的方法,你不再关心对象类型了。
关于design-patterns - 我需要询问对象类,但这是一种不好的做法。这种情况的替代方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16219461/