当面の問題は、現在 3 層のソリューションを使用していることです (Presentation.aspx.vb は DataAccessLayer.vb を呼び出す BusinessLayer.vb を呼び出します)。ただし、複数の Web フォームが同じ機能を使用するため、BusinessLayer と DataAccessLayer.vb を抽象クラスにしたいと考えています。
だから私は現在これをやっています(抽象クラスはありません):
'Presentation Layer (pseudocode)
public sub checkUser(byval userName as string, byval dept as string)
dim isGood as boolean = BL.checkUserAccess(userName, dept)
'some more code
'change properties of webcontrols, etc
end sub
'Business Layer (pseudocode)
public function checkUserAccess(byval name as string, byval group as string) as boolean
dim accessObject as dataObject = DAL.checkPermissions(name, group)
if accessObject.isHighAccess then
'some code
else
'some other code
end if
end function
'Data Access Layer (pseudocode)
public function checkPermissions(byval userid as string, byval section as string) as dataObject
'some code
end function
ただし、抽象クラスを追加すると、この構造を維持できますか?
例えば:
'Presentation Layer (pseudocode)
public sub checkUser(byval userName as string, byval dept as string)
dim isGood as boolean = instOne_BL.checkUserAccess(userName, dept)
'some more code
'change properties of webcontrols, etc
end sub
'Business Layer (pseudocode)
public class instOne_BL inhertis BL
public function checkUserAccess(byval name as string, byval group as string) as boolean
base.checkUserAccess(name, group)
instOne_DAL.checkPermissions(name, group)
end function
end class
'Data Access Layer (pseudocode)
public class instOne_DAL inherits DAL
public function checkPermissions(byval userid as string, byval section as string) as dataObject
base.checkPermissions(userid, section)
end function
end class