Design patterns 设计问题
我有一个具有一些属性的通道和一个扩展通道的通道代理。此ChannelProxy保留原始值,以便可以应用乐观并发。您可以在无并发检查和乐观并发检查之间切换 现在我想实现一个LazyLoadedChannel,它可以是通道或通道代理。扩展这两个方面是不可能的。什么是解决这类问题的好办法Design patterns 设计问题,design-patterns,Design Patterns,我有一个具有一些属性的通道和一个扩展通道的通道代理。此ChannelProxy保留原始值,以便可以应用乐观并发。您可以在无并发检查和乐观并发检查之间切换 现在我想实现一个LazyLoadedChannel,它可以是通道或通道代理。扩展这两个方面是不可能的。什么是解决这类问题的好办法 我可以创建一个LazyLoadedChannel(扩展频道)和一个LazyLoadedChannelProxy(扩展频道代理),但这意味着代码将在这两个类中重复。看起来像是一个选项。看起来像是一个选项。如上所述(Dm
我可以创建一个LazyLoadedChannel(扩展频道)和一个LazyLoadedChannelProxy(扩展频道代理),但这意味着代码将在这两个类中重复。看起来像是一个选项。看起来像是一个选项。如上所述(Dmitri),它看起来像是你在频道上放置的装饰器。假设您的代理仅在需要时访问这些值,即当它们即将更改时。如上所述(Dmitri),它看起来像是您在频道上放置的装饰器。假设您的代理仅在需要时访问这些值,即当它们即将被更改时。装饰器模式对我来说也是一个不错的选择 但是,您也可以这样做:
频道
配置为延迟加载或非延迟加载。你可以用一个简单的方法来实现这一点李>
Channel
可以配置,那么ChannelProxy
也应该自动配置,因为它只是一个子类。所以你可能不需要再做什么了李>
ChannelProxy
可能必须提供自己的LoadingStrategy
类装饰图案对我来说也是个不错的选择 但是,您也可以这样做:
频道
配置为延迟加载或非延迟加载。你可以用一个简单的方法来实现这一点李>
Channel
可以配置,那么ChannelProxy
也应该自动配置,因为它只是一个子类。所以你可能不需要再做什么了李>
ChannelProxy
可能必须提供自己的LoadingStrategy
类因此,在Decorator中,您需要与通道(或ChannelProx)中相同的getter和setter,但是否将它们转发到通道实例?(除了那些你想懒洋洋的)。是的。我看到弗雷德里克给了你所需要的指导;-)我以为你是在代理中这样做的,因为代理或多或少是一种装饰器。所以在装饰器中,你需要与通道(或ChannelProx)中相同的getter和setter,但要将它们转发到通道实例吗?(除了那些你想懒洋洋的)。是的。我看到弗雷德里克给了你所需要的指导;-)我以为你是在代理中这样做的,因为代理或多或少是一种装饰器。事实上,我在一个.NET项目的例子中看到了这一点。我将尝试这两种方法,看看什么更适合我。事实上,我在一个.NET项目的例子中看到了这一点。我将尝试这两种方法,看看什么更适合我。谢谢。