2 回答

TA贡献1796条经验 获得超4个赞
如果它们没有共同的代码,那么它们实际上只是两个独立的类。您可能甚至不希望管理代码出现在浏览器中,因为无论如何它都不能在那里使用。
您可以有一个工厂函数来查看管理参数并实例化适当的数据库对象并返回它,但我认为我什至不明白您为什么要为此烦恼。
只需让每个客户端实例化适当的数据库对象。如果有任何公共代码,您可以让两个实现都从一个公共基类继承,并将公共代码放在基类中。
对!我忘了提,但是有一些通用代码……例如,连接和身份验证完全相同。您是否碰巧知道任何非常适合此用例的设计模式?我应该研究工厂吗?
我认为具有继承的通用基类可以解决这里的问题。它为您提供了一个放置公共代码的自然位置,而不必在客户端实现中包含服务器端代码。浏览器实现和服务器实现都是一个子类,只存在于它们各自的平台上。公共基类将在两个地方都存在和使用。
您只需让客户端实例化适当的叶类,共享代码位于基类中。如果要隐藏实际的类构造函数,可以使用工厂函数(它只是一个简单的函数,它查看条件并为您创建适当的对象并返回它),但我不确定是否有任何令人信服的理由使用这里的工厂功能。您只会在它所针对的平台上包含适当的叶类,因此没有地方可以在同一代码中使用其中一个或另一个。

TA贡献2021条经验 获得超8个赞
你会考虑只有“用户”吗?那么每个用户都可以有一个“角色”,可以是“用户”或“管理员”。因此,基于该“角色”,您将为每个用户定义权限。我发现这种解决方案更容易解决这类问题,但如果它不符合您的情况,请告诉我。
添加回答
举报