上一节中已经介绍了简单工厂,我想大家应该有一定认识了。然后简单工厂有它自身的局限性~今天继续为大家介绍工厂模式之工厂方法 .
UML示意图:
组成部分:
1.抽象工厂
2.具体工厂
3.抽象产品
4.具体产品
代码例子:
1. 抽象工厂
package com.eekq.creator.factorymethod;
public interface IFactory {
//抽象工厂,工厂方法
public IProduct factory();
}
2. 抽象产品
package com.eekq.creator.factorymethod;
public interface IProduct {
//抽象产品,抽象方法
public void print();
}
3. 具体产品:可以有N个同类产品,在这里我以两个产品为例
产品1
package com.eekq.creator.factorymethod;
public class Product1 implements IProduct {
public void print() {
// TODO 自动生成方法存根
//示例方法
System.out.println("Product1.print()");
}
}
产品2
package com.eekq.creator.factorymethod;
public class Product2 implements IProduct {
public void print() {
// TODO 自动生成方法存根
System.out.println("Product2.print()");
}
}
4. 具体工厂:针对具体产品的具体工厂,有N类产个产品就有N个具体工厂
工厂1
package com.eekq.creator.factorymethod;
public class Factory1 implements IFactory {
public IProduct factory() {
// TODO 自动生成方法存根
return new Product1();
}
}
工厂2
package com.eekq.creator.factorymethod;
public class Factory2 implements IFactory{
public IProduct factory() {
// TODO 自动生成方法存根
return new Product2();
}
}
5.客户端的调用
package com.eekq.creator.factorymethod;
public class Main {
/**
*@paramargs
*/
public static void main(String[] args) {
// TODO 自动生成方法存根
//工厂方法示例
IFactory factory = new Factory1();
IProduct product1 = factory.factory();//获取工厂1
product1.print();//执行具体产品功能
IFactory factory2 = new Factory2();
IProduct product2 = factory2.factory();//获取工厂1
product2.print();//执行具体产品功能
}
}
6.输出结果
Product1.print()
Product2.print()
7.总结
工厂方法模式保持了简单工厂的优点,同时克服了简单工厂的缺点。工厂方法的核心在于抽象工厂,这样如果有新的产品加入,就实现抽象工厂就可以了。这也具有了可扩展性,同时也满足了‘开-闭’原则
作者:飞行鱼 QQ:6868861 推荐J2EE群:7715552
分享到:
相关推荐
在软件设计模式中,工厂方法模式(Factory Method Pattern)是一种创建型模式,它提供了一种创建对象的最佳方式。本讲将深入探讨工厂方法模式的概念、结构以及在实际开发中的应用。 工厂方法模式的核心思想是定义一...
软件体系结构与设计模式第十二章工厂方法模式 工厂方法模式是一种常用的设计模式,它定义了一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method使一个类的实例化延迟到其子类。这种模式的主要作用是...
在02第二讲工厂方法模式.ppt中,可能详细讲解了以下内容: 1. 模式的结构:展示类图,说明各个角色之间的关系。 2. 工厂方法模式的实现:通过代码示例展示如何创建抽象工厂和具体工厂,以及如何定义抽象产品和具体...
《新版设计模式手册 - C#设计模式(第二版)》是一部深入探讨C#编程中设计模式的权威指南,尤其适合已经有一定C#基础并希望提升软件设计能力的开发者阅读。设计模式是解决软件开发中常见问题的经验总结,是软件工程的...
全书分为七个部分,涵盖了设计模式的基本介绍、创建型模式、结构型模式、行为型模式、小颗粒度基础模式的应用案例、应用全局的模式化实现方法以及针对Web和Web Service领域的设计技巧。 #### 第一部分:概述性介绍 ...
这里我们主要关注的是"Java设计模式第二版源码",这可能是一个包含各种设计模式实现的代码库。 设计模式分为三类:创建型模式、结构型模式和行为型模式。创建型模式主要关注对象的创建过程,如单例模式(Singleton...
工厂模式是一种创建型设计模式,它提供了一个创建对象的接口,但允许子类决定实例化哪个类。这使得系统可以在不指定具体类的情况下引用抽象。在Java中,工厂模式可以通过定义一个工厂接口和多个实现了该接口的具体...
### 设计模式——工厂模式与单例模式 #### 一、引言 设计模式是软件工程领域中的一个重要概念,它代表了在特定情况下解决常见问题的最佳实践。在本篇文章中,我们将深入探讨两种广泛使用的软件设计模式:工厂模式...
设计模式是解决软件设计中常见问题的经验总结,它们提供了一种标准的方法来处理特定场景下的问题,使得代码更易于理解、维护和扩展。这两本书对于Java开发者来说尤其宝贵,因为它们不仅介绍了设计模式的概念,还提供...
单例模式是软件设计模式中的一种经典模式,它保证了类只有一个实例存在,并提供一个全局访问点。在Java等面向对象编程语言中,单例模式常用于管理共享资源,如数据库连接池、线程池或者配置文件等。结合工厂模式,...
1. **模式的应用场景**:理解每个设计模式最适合解决的问题,以及在实际项目中何时、如何使用。 2. **模式的实现**:学习如何在Java代码中实现各种设计模式,包括类图和对象图的绘制,以及相应的代码结构。 3. **...
**C#设计模式第二版PPT**是一套深入解析C#编程中设计模式的教育资料,旨在帮助开发者提升代码质量,提高软件设计能力。设计模式是面向对象编程中的一种最佳实践,是解决常见问题的经验总结,是软件开发中的重要工具...
“抽象工厂模式”(Abstract Factory pattern)也被简要提及,它是另一个创建型设计模式,用于创建一系列相关或相互依赖的对象。抽象工厂模式与工厂模式的不同之处在于,它不仅仅关注单一产品的创建,而是关注产品...
2. **DAO工厂**:`F1Factory`是第一层DAO工厂,根据配置选择第二层工厂`F2AFactory`或`F2BFactory`来获取`DepDAO`实例。这种方式允许在不修改业务逻辑的情况下,切换不同的数据访问实现。 在实际项目中,`F2A...
设计模式是软件工程中的一种重要概念,它代表了在特定情境下解决常见问题的最佳实践。刘伟先生在讲解设计模式时,通常会深入浅出地介绍这些模式的原理、应用场景以及如何有效地在实际编程中应用它们。设计模式并不是...
《Java设计模式》是刘伟老师的一本经典教材,它深入浅出地讲解了软件设计中的重要概念——设计模式。设计模式是经验丰富的开发者在解决常见问题时总结出的通用解决方案,是软件开发中的智慧结晶。这本书的课后习题和...
设计模式是软件工程中的一种重要思想,它代表了在特定情境下解决常见问题的最佳实践。刘伟先生关于设计模式的讲解结合了理论与实例,帮助开发者更好地理解和应用这些模式。以下将详细介绍23种设计模式及其相关知识。...
设计模式之 Factory(工厂方法和抽象工厂) 使用工厂模式就象使用 new 一样频繁. 设计模式之 Builder 汽车由车轮 方向盘 发动机很多部件组成,同时,将这些部件组装成汽车也是一件复杂的工作,Builder 模式就是将这...