`
李灵晖-raylee
  • 浏览: 135718 次
博客专栏
Group-logo
从头认识java
浏览量:0
文章分类
社区版块
存档分类
最新评论

从头认识java-8.8 使用匿名内部类改造7.8章节的工厂方法

 
阅读更多

这一章节我们再来重访工厂方法,使用匿名内部类来改造工厂方法。

之前的文章:7.8 接口与工厂模式

我们上一次工厂方法的例子:

package com.ray.ch07;

interface Service {
	void doSomeThing();
}

interface ServiceFactory {
	Service getService();
}

class ServiceImpl implements Service {

	@Override
	public void doSomeThing() {

	}
}

class ServiceFactoryImpl implements ServiceFactory {

	@Override
	public Service getService() {
		return new ServiceImpl();
	}
}

public class Test {
	public static void test(ServiceFactory factory) {
		Service service = factory.getService();
		service.doSomeThing();
	}

	public static void main(String[] args) {
		test(new ServiceFactoryImpl());
	}
}

我们将通过匿名内部类来改造上面的工厂方法,隐藏工厂实现代码的实现代码。

package com.ray.ch07;

interface Service {
	void doSomeThing();
}

interface ServiceFactory {
	Service getService();
}

class ServiceImpl implements Service {

	private ServiceImpl() {
	}

	@Override
	public void doSomeThing() {
	}

	public static ServiceFactory getFactory() {
		return new ServiceFactory() {
			@Override
			public Service getService() {
				return new ServiceImpl();
			}
		};
	}

}

public class Test {
	public static void test(ServiceFactory factory) {
		Service service = factory.getService();
		service.doSomeThing();
	}

	public static void main(String[] args) {
		test(ServiceImpl.getFactory().getService());
	}
}

上面的代码使用匿名内部类隐藏了工厂的实现,替代了一部分的代码,因为一般来说一个实现对应一个工厂。


总结:这一章节主要讲述了使用匿名内部类改造工厂方法。


这一章节就到这里,谢谢。

-----------------------------------

目录



分享到:
评论

相关推荐

    mchange-commons-java-0.2.11.zip

    在Java开发中,这样的库可以极大地提高开发效率,因为它封装了常见的功能,开发者可以直接使用,而无需从头编写代码。 描述中的 "mchange-commons-java-0.2.11.jar包" 是该库的主要组成部分,是一个Java归档(JAR)...

    eclipse-java-2021-12-R-win32-x86_64.zip

    Eclipse IDE for Java Developers 是一款广泛使用的集成开发环境(IDE),专为Java编程设计。它由Eclipse基金会维护,提供了一整套工具,用于编写、调试、测试和部署Java应用程序。2021-12-R 版本是Eclipse的一个...

    api-ntrip-java-client-master.zip_android_ntrip_ntrip java实现_ntr

    - **Android Socket编程**:使用Java的Socket类建立与NTRIP服务器的连接,收发数据。 - **JSON或XML解析**:NTRIP数据可能以这两种格式传输,需要解析成Java对象。 - **Android权限管理**:可能需要获取网络访问权限...

    aip-java-sdk-4.2.0

    2. **aip-java-sdk-4.2.0.jar**:这是核心的AIP Java SDK库文件,包含了所有用于与百度AI平台交互的类和方法。开发者需要引入这个jar文件到他们的Android项目中,才能使用SDK提供的功能。 3. **json-20160810.jar**...

    aspose-words-java-23.6-jdk17.jar.zip

    在Java代码中,他们可以通过导入Aspose.Words相关的类和方法,开始执行文档处理任务。例如,下面是一个简单的例子,演示如何使用Aspose.Words读取和保存一个Word文档: ```java import com.aspose.words.Document; ...

    java-Swing外观包

    Java Swing是Java GUI(图形用户界面)开发的一个重要组件,它是Java Foundation Classes (JFC)的一部分,用于构建桌面应用程序。Swing提供了丰富的组件库,允许开发者创建美观且功能丰富的交互式用户界面。在这个...

    JAVA编程高级-工具类.pdf

    因此,`Object`类中定义的方法可以在所有类中使用。 - **Object类常用方法** - `public boolean equals(Object obj)`:比较两个对象引用的值是否相等,实际上是比较它们的哈希地址。 - `public int hashCode()`:...

    手把手 - 微服务 Windows 开发环境从头搭建 2022-09-05 直播录像 - 软件安装包-2.zip

    【标题】: "手把手 - 微服务 Windows 开发环境从头搭建 2022-09-05 直播录像 - 软件安装包-2.zip" 这个压缩包文件包含了搭建微服务开发环境所需的基础软件,包括JDK(Java Development Kit)和MySQL数据库。...

    Java---笔试题大全

    Java是一种广泛使用的面向对象的编程语言,其特点包括抽象、继承、封装和多态性。在Java笔试中,这些概念经常被考察。 1. **面向对象的特征**: - **抽象**:抽象是将复杂问题简化的过程,分为过程抽象(方法)和...

    使用渲染脚本实现模糊视图背景 - Java - 下载.zip

    1. **源代码**:这是实现模糊视图背景的核心部分,可能包含Java类和方法,用于处理图像并应用模糊效果。 2. **示例应用**:可能包含一个简单的Java应用,演示如何使用库来创建模糊视图背景,这对于开发者理解和学习...

    java-多文件上传dome

    本示例"java-多文件上传dome"提供了一个工具包,可直接下载使用,方便开发者快速实现多文件上传功能。 在Java中,处理多文件上传通常涉及到Servlet API,特别是`Part`接口,它是Java EE 7引入的一个用于处理HTTP...

    _Java-集合容器-2.List及其实现类.ppt

    在Java编程中,集合容器是数据管理的重要组成部分,它们提供了灵活且高效的方式来存储和操作对象。List接口是Java集合框架中的核心接口之一,它继承自Collection接口,并具有特定的特性:元素可以重复,保持元素的...

    Java基础知识的详细总结

    - **匿名内部类的使用**: - 匿名内部类通常用于实现接口或继承抽象类。 - 适用于只需要创建一个内部类实例的场景。 #### 九、反射机制 反射是Java中的一个重要概念,它允许程序在运行时检查类的信息并调用其...

    设计模式课程设计---使用5个以上不同的设计模式完成(java)

    在Java中,我们可以使用`java.lang.Cloneable`接口和`Object.clone()`方法来实现对象的浅复制,或者利用序列化和反序列化实现深复制。这种模式在需要频繁创建相似对象的场景下非常有效,节省了时间和内存。 2. **...

    java-lib

    这些库通常以JAR(Java Archive)文件的形式存在,里面封装了类和方法,可供应用程序调用。Java库广泛应用于网络通信、数据库操作、图形用户界面(GUI)、数学计算、XML处理、安全、并发等各个领域。 1. **网络通信...

    Free Spire.Doc for Java - 3.9 无水印

    在Java项目中,首先需要将`lib`目录下的`Spire.Doc.jar`库文件引入到类路径中。然后,可以通过以下基本步骤开始使用: 1. 创建`Document`对象,加载或新建Word文档。 2. 使用各种API添加或修改文档内容。 3. 调用`...

    java-sdk-master.zip_leancound集成第三方插件_即时通讯

    Java SDK是许多软件开发中的重要组成部分,特别是在与服务器端交互时...通过学习和使用这个SDK,开发者可以迅速在自己的应用中实现稳定、可靠的即时通信功能,而无需从头构建整个通讯系统,大大节省了开发时间和资源。

    ks-java-lib:包含 Java 的 KS 库

    使用 KS Java 库时,开发者需要按照库的文档说明将其添加到项目依赖中,然后通过导入相应的类和方法来使用库的功能。同时,为了确保代码的健壮性,开发者还应该参考提供的测试用例进行自我测试,并遵循库的更新维护...

    curso-java-pildorasInf:从头开始学习Java

    【标题】:“curso-java-pildorasInf:从头开始学习Java” 这门“从头开始学习Java”的课程,源自"PillsInformática"的教育资源,旨在为初学者提供全面的Java编程知识。Java是一种广泛使用的面向对象的编程语言,由...

Global site tag (gtag.js) - Google Analytics