![](/img/trans.png)
[英]Is there a way to create a local method in a method to avoid duplicating code?
[英]Is there a way to create Model here without duplicating the code?
我需要为一个特定的MVC会话使用两个类似的库。 意思是,它们(它们的方法)不会同时使用(我将在特定的会话周围使用If...Else
来一次只选择一个库的方法)。 问题是:
为了使这两个库都能工作,我的实体(模型)必须extend
它们的类(这是我使用C ++的前提)。
他们不提供任何Interface
。 因此,我无法进行多重继承。
我剩下的唯一选择是:为两个库分别创建两个不同的模型,并根据会话(或正在使用的库)使用特定的模型。
但是,它将复制模型中的代码。 目前,由于在MVC会话之间使用了持久存储,因此无需在它们之间同步数据。 但是,重复的代码仍然很难管理。 有办法避免这种情况吗?
如果您要的是,您将无法同时包含两个库。 您可能有一些选择,仅取决于您希望事情如何工作。
据我了解,您可以创建两个类,每个类扩展一个不同的库,这些类实现一个Interface,覆盖所需的任何方法。
伪代码:
private class Lib1Adapter extends Lib1 implements LibAdapter {
// wrapper methods call lib1 methods
}
private class Lib2Adapter extends Lib2 implements LibAdapter {
// wrapper methods call lib2 methods
}
public interface LibAdapter {
// method signatures for publicly accessible methods
}
public class YourModel {
public LibAdapter la = < boolean statement > ? new Lib1Adapter() : new Lib2Adapter();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.