今天看到工厂模式。工厂模式主要有三种,简单工厂模式,工厂方法模式,抽象工厂模式。
对于前两种简单工厂和工厂方法两者很相近,个人理解可以说工厂方法是简单工厂的一种扩展吧。
1.简单工厂模式
简单工厂模式主要包括抽象产品、具体产品、工厂三个角色。举一个具体的代码例子
/** * 抽象手机 */ interface Phone { public void display(); } /** * 具体苹果手机 */ class ApplePhone implements Phone { public void display() { System.out.println("苹果手机"); } } /** * 具体三星手机 */ class SamsungPhone implements Phone { public void display() { System.out.println("三星手机"); } } /** * 具体华为手机 */ class HuaweiPhone implements Phone { public void display() { System.out.println("华为手机"); } } /** * 手机工厂(根据不同条件生产不同手机产品) */ class PhoneFactory { public Phone createPhone(String type) { Phone phone = null; // 这里要1.7版本的jdk才支持string switch (type) { case "Apple": phone = new ApplePhone(); break; case "Samsung": phone = new SamsungPhone(); break; case "Huawei": phone = new HuaweiPhone(); break; default: break; } return phone; } }
测试代码
public static void main(String[] args) { PhoneFactory phoneFactory = new PhoneFactory(); Phone phone = null; phone = phoneFactory.createPhone("Apple"); phone.display(); phone = phoneFactory.createPhone("Samsung"); phone.display(); phone = phoneFactory.createPhone("Huawei"); phone.display(); }
运行结果
苹果手机 三星手机 华为手机
2.工厂方法模式
产品同简单工厂,这里工厂有所变化
/** * 抽象手机工厂 */ interface PhoneFactory { public Phone createPhone(); } /** * 苹果手机工厂(只负责生产苹果手机) */ class ApplePhoneFactory implements PhoneFactory { @Override public Phone createPhone() { return new ApplePhone(); } } /** * 三星手机工厂(只负责生产三星手机) */ class SamsungPhoneFactory implements PhoneFactory { @Override public Phone createPhone() { return new SamsungPhone(); } } /** * 华为手机工厂(只负责生产华为手机) */ class HuaweiPhoneFactory implements PhoneFactory { @Override public Phone createPhone() { return new HuaweiPhone(); } }
测试代码
public static void main(String[] args) { PhoneFactory phoneFactory = null; phoneFactory = new ApplePhoneFactory(); phoneFactory.createPhone().display(); phoneFactory = new SamsungPhoneFactory(); phoneFactory.createPhone().display(); phoneFactory = new HuaweiPhoneFactory(); phoneFactory.createPhone().display(); }
运行结果
苹果手机 三星手机 华为手机
3.抽象工厂模式
上面两种模式都是用来解决同一种产品的方案,虽然有不同品牌的手机实际上都属于手机一种。而对于抽象工厂,个人认为是为了解决多种产品而产生的方案,这多种产品之间有着共同的联系。比如在我之前的例子中再加入一个平板产品,三个厂家都有自己的手机和平板产品,这里可以创建三个工厂来分别生产三个厂家的手机和平板。下例中手机依然采用前面的。
/** * 抽象平板 */ interface Pad { public void display(); } /** * 具体苹果平板 */ class ApplePad implements Pad { public void display() { System.out.println("苹果平板"); } } /** * 具体三星平板 */ class SamsungPad implements Pad { public void display() { System.out.println("三星平板"); } } /** * 具体华为平板 */ class HuaweiPad implements Pad { public void display() { System.out.println("华为平板"); } } /** * 抽象工厂 */ interface Factory { public Phone createPhone(); public Pad createPad(); } /** * 苹果工厂(只负责生产苹果产品) */ class AppleFactory implements Factory { @Override public Phone createPhone() { return new ApplePhone(); } @Override public Pad createPad() { return new ApplePad(); } } /** * 三星工厂(只负责生产三星产品) */ class SamsungFactory implements Factory { @Override public Phone createPhone() { return new SamsungPhone(); } @Override public Pad createPad() { return new SamsungPad(); } } /** * 华为工厂(只负责生产华为产品) */ class HuaweiFactory implements Factory { @Override public Phone createPhone() { return new HuaweiPhone(); } @Override public Pad createPad() { return new HuaweiPad(); } }
测试代码
public static void main(String[] args) { Factory factory = null; factory = new AppleFactory(); factory.createPhone().display(); factory.createPad().display(); factory = new SamsungFactory(); factory.createPhone().display(); factory.createPad().display(); factory = new HuaweiFactory(); factory.createPhone().display(); factory.createPad().display(); }
测试结果
苹果手机 苹果平板 三星手机 三星平板 华为手机 华为平板
相关推荐
在学习Java设计模式时,掌握其概念、应用、优点和缺点非常重要。设计模式是软件开发中经常使用的一种通用解决方案模板,用于解决特定上下文中的常见问题。它们源于设计模式的研究,通常被认为是软件设计中的最佳实践...
这份"图解java设计模式_学习笔记"是针对Java开发者深入理解和应用设计模式的重要资源。在这里,我们将深入探讨Java设计模式的核心概念、分类以及它们在实际开发中的应用。 设计模式分为三大类:创建型、结构型和...
工厂模式是设计模式中的一种,属于创建型模式,它的主要目标是提供一个创建对象的接口,但让子类决定实例化哪一个类。这样,工厂模式使代码能够独立于实际的产品类型进行工作。 工厂模式的核心思想是通过一个共同的...
这份"根据《JAVA与设计模式》整理的笔记及示例代码"涵盖了Java语言和设计模式的核心概念,旨在帮助开发者理解和应用这些模式。 一、设计模式的基本概念 设计模式是对在特定情境下软件设计问题的解决方案的一种描述...
通过以上内容,我们可以看到韩顺平老师的Java设计模式笔记涵盖了设计模式的基础概念、常见面试题解析、设计原则等内容,并通过具体案例来阐述设计模式的实际应用价值,旨在帮助学习者深刻理解并掌握设计模式,从而在...
Java设计模式是软件开发中一种被广泛采用的方式,它是一组被反复使用、多数人知晓、分类编目、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 根据提供的文件内容,...
Java设计模式是软件开发中的一种最佳实践,它们是为了解决特定场景下的设计问题而发展起来的。23种设计模式被广泛应用于提高代码的可重用性、可读性、可维护性和灵活性。韩顺平老师的Java设计模式课程通过生活中的...
Java设计模式是软件开发中的重要概念,它是一种在特定情境下解决问题的经验总结,可以提高代码的可读性、可维护性和可复用性。这些模式是面向对象编程中的一种最佳实践,通过标准化的方式处理常见的设计问题。下面...
本资料“图解Java设计模式笔记总结word版本”聚焦于通过图文并茂的方式,深入浅出地解析各种设计模式。以下是基于这个主题的详细知识点讲解: 1. **设计模式的分类** - **创建型模式**:如单例(Singleton)、工厂...
Java设计模式是软件开发中的重要概念,它是一种在特定情境下解决常见问题的经验总结,能够提升代码的可读性、可维护性和复用性。本资料包“java设计模式源码和笔记(第一部分)”提供了对Java设计模式的深入理解和...
以上是关于Java设计模式中的单例模式和工厂模式的详细介绍。这两种模式都是Java开发者必备的知识点,理解并掌握它们对于编写高质量、易于维护的代码至关重要。在实际项目中,灵活运用这些模式可以提高代码的可读性...
以下是一些在尚学堂300Java设计模式部分学习笔记中涉及的设计模式的知识点: 创建型模式: 创建型模式主要解决对象创建的问题,确保系统的灵活性和封装创建细节。学习笔记中提到了5种创建型模式: 1. 单例模式...
以上只是Java设计模式笔记的冰山一角,实际笔记中还会有更多关于每种模式的详细描述、示例代码和应用场景。通过学习和应用这些模式,开发者可以写出更加优雅、可维护的代码,提升团队协作效率和软件质量。
在软件设计领域,设计模式是一种经过验证的、通用的解决方案,用于解决常见编程问题。"工厂模式"是其中一种常用...通过实践和学习,你可以更好地掌握这些设计模式,并将其应用到你的项目中,提升软件开发的效率和质量。
Java学习笔记及设计模式是程序员进阶过程中必不可少的资源,涵盖了广泛的Java基础知识和高级概念,同时结合了设计模式这一软件工程的重要组成部分。本资源集合旨在帮助开发者深化对Java语言的理解,提升编程技能,并...
定义: 结构说明: 相关概念: 接口: 接口与抽象类的区别: 面向接口编程: 功能: 时序图: 优缺点: 代码阐释:
《尚硅谷_韩顺平_图解Java设计模式》是一份详尽的Java设计模式学习资料,由知名教育机构尚硅谷的讲师韩顺平精心编撰。这份笔记全面覆盖了设计模式的重要概念、应用场景以及实战技巧,是Java开发者学习和复习设计模式...
在这个学习笔记中,我们将深入理解简单工厂模式的概念、工作原理以及如何在实际编程中应用。 简单工厂模式的核心思想是通过一个公共的工厂类来创建不同类型的对象。这个工厂类负责识别客户端请求的对象类型,并返回...
这个“Java版设计模式学习笔记”涵盖了多种设计模式,旨在帮助开发者更好地理解和应用这些模式。让我们深入探讨一下其中可能包含的关键知识点。 一、单例模式 单例模式确保一个类只有一个实例,并提供一个全局访问...
7. **设计模式**:介绍常见的设计模式,如单例、工厂、装饰器、观察者等,帮助提升代码的复用性和可维护性。 8. **反射机制**:探讨Java反射API的使用,包括动态获取类信息、创建对象、调用方法等功能,这对于理解...