我只是想知道:有了Java
8,并有可能在接口中添加实现(有点像Scala特质),是否有可能像在Scala中那样实现蛋糕模式?
如果是,有人可以提供代码段吗?
从其他答案中得到启发,我想到了以下(粗糙的)类层次结构,该层次结构类似于Scala中的蛋糕模式:
interface UserRepository {
String authenticate(String username, String password);
}
interface UserRepositoryComponent {
UserRepository getUserRepository();
}
interface UserServiceComponent extends UserRepositoryComponent {
default UserService getUserService() {
return new UserService(getUserRepository());
}
}
class UserService {
private final UserRepository repository;
UserService(UserRepository repository) {
this.repository = repository;
}
String authenticate(String username, String password) {
return repository.authenticate(username, password);
}
}
interface LocalUserRepositoryComponent extends UserRepositoryComponent {
default UserRepository getUserRepository() {
return new UserRepository() {
public String authenticate(String username, String password) {
return "LocalAuthed";
}
};
}
}
interface MongoUserRepositoryComponent extends UserRepositoryComponent {
default UserRepository getUserRepository() {
return new UserRepository() {
public String authenticate(String username, String password) {
return "MongoAuthed";
}
};
}
}
class LocalApp implements UserServiceComponent, LocalUserRepositoryComponent {}
class MongoApp implements UserServiceComponent, MongoUserRepositoryComponent {}
以上代码自2013年1月9日起在Java 8上编译。
因此,可以的Java 8做cake- 喜欢 的图案? 是。
它像Scala一样简洁,还是像Java中的其他模式一样有效(即依赖注入)?可能不是,上面的草图需要大量文件,并且不如Scala简洁。
综上所述:
val``var
可以通过使用静态哈希图(和延迟初始化)来模拟,也可以由类的客户端简单地将值存储在其侧面(如UserService一样)进行模拟。this.getClass()
默认接口方法来发现我们的类型。PS:你能用Java8为Android 7.0及更高版本和Java7为更低版本做同样的apk吗?
但是当我使用Java8时, 它抛出 java.time.format.DateTimeParseException:无法分析文本“201510”:无法从TemporalAccessor获取LocalDate:{Year=2015,MontHofYear=10},ISO类型为java.time.Format.Parsed
当我想在子文件夹中安装我的Cakephp应用程序时,使用默认的cakephp htaccess文件设置将无法在我的域上工作,而一切都可以在localhost上工作(xampp) 目标= 安装需要3个htaccess文件: root.htaccess 遵循cakephp文档,并使用这些htaccess文件,我得到了error500结果。使用RewriteBase/而不是/mycakeapp将抛出40
我目前已经设置了下面的Auth组件,它工作得很好,但是我的客户现在希望能够为用户提供使用用户名或电子邮件地址登录的选项。 我当前的设置: 我如何才能更改此项,以便日志需要“电子邮件”或新字段“用户名”。 我会假设一个OR语句,但是下面的不工作:
本文向大家介绍一共有九块蛋糕,但要装在四个盒子里,而且每个盒子里至少要装三块蛋糕,请问你要怎么做?相关面试题,主要包含被问及一共有九块蛋糕,但要装在四个盒子里,而且每个盒子里至少要装三块蛋糕,请问你要怎么做?时的应答技巧和注意事项,需要的朋友参考一下 前三个盒子每个盒子装3块蛋糕,第四个盒子把已经装好蛋糕的前三个盒子装进去。