'''
''' 生产统计类(当前类线程仅限同步中使用)
'''
Public Class Statistics
'''
''' 校验总数,包含有效校验与无效检验
'''
Private _checkCount As Integer
'''
''' 检验有效总数中无效总数
'''
Private _invalidCount As Integer
'''
''' 检验总数中有效总数
'''
Private _validCount As Integer
'''
''' 检验有效总数中失败总数
'''
Private _failCount As Integer
'''
''' 检验有效总数中通过总数
'''
Private _passCount As Integer
'''
''' 产品运行时良品率,通过总数除以有效总数
'''
Private _yield As Double
Private ReadOnly _observerList As List(Of IStatisticsObserver)
Sub New()
_checkCount = 0
_failCount = 0
_passCount = 0
_observerList = New List(Of IStatisticsObserver)()
End Sub
Public ReadOnly Property CheckCount() As Integer
Get
Return _checkCount
End Get
End Property
Public ReadOnly Property InvalidCount() As Integer
Get
Return _invalidCount
End Get
End Property
Public ReadOnly Property FailCount() As Integer
Get
Return _failCount
End Get
End Property
Public ReadOnly Property PassCount() As Integer
Get
Return _passCount
End Get
End Property
Public Sub AddFailCount()
_failCount += 1
UpdateFailCount(_failCount)
_validCount +=1
UpdateValidCount(_validCount)
_checkCount += 1
UpdateSumCount(_checkCount)
_yield = (_passCount / _validCount) * 100
UpdateYield(_yield)
End Sub
Public Sub AddPassCount()
_passCount += 1
UpdatePassCount(_passCount)
_validCount +=1
UpdateValidCount(_validCount)
_checkCount += 1
UpdateSumCount(_checkCount)
_yield = (_passCount / _validCount) * 100
UpdateYield(_yield)
End Sub
Public Sub AddInvalidCount()
_invalidCount += 1
UpdateInvalidCount(_invalidCount)
_checkCount += 1
UpdateSumCount(_checkCount)
End Sub
Public Sub AddStatisticsObserver(observer As IStatisticsObserver)
_observerList.Add(observer)
End Sub
Public Sub RemoveStatisticsObserver(observer As IStatisticsObserver)
_observerList.Remove(observer)
End Sub
Public Sub ClearStatisticsObserver()
_observerList.Clear()
End Sub
Private Sub UpdateFailCount(count As Integer)
For Each observer As IStatisticsObserver In _observerList
observer.UpdateFailCount(count)
Next
End Sub
Private Sub UpdatePassCount(count As Integer)
For Each observer As IStatisticsObserver In _observerList
observer.UpdatePassCount(count)
Next
End Sub
Private Sub UpdateValidCount(count As Integer)
For Each observer As IStatisticsObserver In _observerList
observer.UpdateValidCount(count)
Next
End Sub
Private Sub UpdateInvalidCount(count As Integer)
For Each observer As IStatisticsObserver In _observerList
observer.UpdateInvalidCount(count)
Next
End Sub
Private Sub UpdateSumCount(count As Integer)
For Each observer As IStatisticsObserver In _observerList
observer.UpdateSumCount(count)
Next
End Sub
Private Sub UpdateYield(yield As Double)
For Each observer As IStatisticsObserver In _observerList
observer.UpdateYield(yield)
Next
End Sub
End Class