项目里面使用spring,我不会配置(正在学),都是师兄配好了直接用。看到里面都有这么一句。
@InjectSpring("xtglFacade")
public abstract XtglFacade getXtglFacade();
这表示注入一个Facade吧,我也不懂。想弄明白是怎么回事,就自己写几个test玩儿,但是越写越糊涂了。如下:
TestA.java
package com.djwl.test.interfaceTest;
import java.util.UUID;
public class TestA {
public TestA() {
System.out.println("step7:constructorA");
}
public String getUUID() {
System.out.println("step9");
return UUID.randomUUID().toString().replaceAll("-", "");
}
}
TestB.java
package com.djwl.test.interfaceTest;
public interface TestB {
public TestA getTestA();
public String test();
}
TestBImpl.java
package com.djwl.test.interfaceTest;
public abstract class TestBImpl implements TestB {
public abstract TestB getTestB();
public String test() {
System.out.println("step2");
String string = getTestB().getTestA().getUUID();
System.out.println("step10");
return string;
}
}
TestC.java
package com.djwl.test.interfaceTest;
public class TestC extends TestBImpl {
public TestC(){
System.out.println("step4:constructorC");
}
public TestA getTestA() {
System.out.println("step6");
TestA testA = new TestA();
System.out.println("step8");
return testA;
}
public String test(){
System.out.println("step1");
return super.test();
}
public static void main(String[] args) {
System.out.println(new TestC().test());
}
@Override
public TestB getTestB() {
System.out.println("step3");
TestC testC = new TestC();
System.out.println("step5");
return testC;
}
}
运行TestC.java的main方法,得到结果如下:
step4:constructorC
step1
step2
step3
step4:constructorC
step5
step6
step7:constructorA
step8
step9
step10
36c750665f084696846a24a88c63e312
分享到:
相关推荐
接口在面向对象编程中起着重要的角色,它定义了一组方法签名,但不提供具体实现。通过接口,可以实现不同类之间的多态性,提高代码的灵活性和可扩展性。在业务逻辑层,接口通常用于定义业务操作,而具体的实现由不同...
在Java中,接口使用`interface`关键字声明,它的所有方法默认都是抽象的和公共的。与抽象类不同,接口不能包含字段(变量)和非抽象方法的实现。一个类可以实现多个接口,从而实现多重继承的效果,这是Java等单继承...
首先,接口是一种完全抽象的类型,它不包含任何实现,只定义了方法、属性、事件和索引器的签名。在C#中,接口用`interface`关键字声明。例如,我们可以创建一个名为`IWorker`的接口,定义一个`DoWork`方法: ```...
在IT领域,尤其是在Java编程语言的学习中,抽象类和抽象方法是面向对象...实践是学习编程的最佳途径,因此,动手编写和测试代码是巩固抽象类和抽象方法知识的关键步骤。希望这些内容能帮助你在Java学习之路上更进一步。
测试类通常会使用JUnit框架,创建各种场景来调用抽象方法或接口方法,确保它们的行为符合预期。 例如,我们可以创建一个`Dog`类继承自`Animal`并实现`sound()`方法,同时实现`Flyable`接口: ```java public class...
接口是另一种形式的抽象,它使用`interface`关键字声明。接口可以看作是一种协议,定义了一组方法签名,但不提供具体实现。在给定的示例中,`inf`包中的`Figure`接口定义了一个`area()`抽象方法,要求实现这个接口的...
在软件设计模式中,抽象工厂(Abstract Factory)是一种创建型模式,它提供了一种创建对象组的方法,而无需指定它们的具体类。这个模式的核心在于,它允许客户端代码使用一个接口来创建一组相关或相互依赖的对象,而...
- 抽象类可以提供默认实现的方法,这样子类可以直接使用这些默认方法,无需重写。 - **接口 (Interface):** - 接口定义了一组行为规范,即一系列抽象方法。 - Java 8 开始,接口也可以包含默认方法(default ...
**函数式接口**(Functional Interface)是指一个接口只含有一个抽象方法,这种接口可以使用`@FunctionalInterface`注解来标记,从而确保该接口确实只包含一个抽象方法。 ##### **1. CurrentTimePrinter** **定义*...
在Java等面向对象语言中,接口(Interface)是一种完全抽象的类型,它只包含常量声明和方法签名,不包含任何实现。在数据接口Driver的上下文中,接口可能定义了访问数据库的一系列标准方法,如连接、查询、插入、...
接口(Interface)是面向抽象编程的核心概念,它定义了一组方法签名,但不提供具体实现。通过实现接口,类可以保证遵循特定的行为规范。抽象类则可以包含部分实现,允许子类继承并重写未完成的部分,提供了一种模板...
### 抽象工厂使用简便 #### 一、概述 在软件设计模式中,工厂模式是一种常用的创建型设计模式,主要用于创建一系列相关或相互依赖的对象,而无需指定它们具体的类。简单工厂模式作为工厂模式的一种变体,其核心...
接口的使用使得代码更易于测试和维护,因为它强制规定了实现类必须遵循的合同。 在提供的课堂练习中,我们看到一个试图实例化抽象类`J_Class`的例子,这是不允许的,因为抽象类不能直接创建实例。另一个练习要求...
在面向对象编程中,接口是一种定义行为的标准,它包含一组抽象方法,不包含任何实现。类可以实现一个或多个接口,从而确保它们具有特定的行为。在我们的上下文中,接口将定义与FANUC机器人通信所需的方法和属性。 1...
抽象工厂设计模式是一种创建型设计模式,它提供了一种创建对象族的方法,而无需指定它们的具体类。在软件工程中,当我们需要创建一系列相关或相互依赖的对象时,但又不想指定它们具体的类,抽象工厂模式就能派上用场...
接口使用`interface`关键字声明,且接口中的所有方法默认都是抽象的。Java允许一个类实现多个接口,这提供了多继承的能力,弥补了Java不支持多继承的限制。 在教学设计中,应注重以下几点: 1. **概念理解**:首先...
-- 接口:是抽象层 interface implement -- 接口是一个特殊的抽象类,特殊在接口里都是抽象方法 -- 使用时非常灵活,可以降低程序间的耦合性!!! -- 接口突破了java的单继承的局限性,因为接口可以多继承还...
这种模式的关键在于抽象工厂接口,它定义了一系列方法,用于创建不同类型的对象。这样,客户端代码只需与抽象工厂接口交互,而不直接与具体的工厂类打交道,降低了耦合度。 在ASP.NET框架中,我们可以创建一个抽象...
4. **执行测试**:使用生成的客户端接口调用HAL服务的方法,执行测试用例。 5. **断开连接**:测试完成后,别忘了调用`unbindService()`来释放资源。 **测试用例设计** 测试用例应覆盖HAL的所有预期功能,包括正常...
4. **测试友好**:在单元测试中,可以使用模拟的DAO对象,便于测试业务逻辑。 **DAO抽象工厂的实现方式:** 1. **静态工厂方法**:在工厂类中定义静态方法,直接返回DAO实例。 2. **实例化工厂方法**:创建工厂对象...