在简单工厂模式中,创建类的工作都交给了工厂类来处理。这样一来,假如项目非常庞大,工厂类就难以维护。那么,可以通过将工厂抽象出来,形成一个接口,具体的工厂类实现抽象类的接口。这样一来,核心的工厂类可以不必负责产品的创建,仅负责定义具体工厂类必须实现的接口,形成一个规范。这样的好处是,可以使系统在不修改具体工厂角色的情况下引进新的产品。在这个模式中,工厂类和产品类往往可以依次对应。即一个抽象工厂对应一个抽象产品,一个具体工厂对应一个具体产品,这个具体的工厂就负责生产对应的产品。
抽象工厂(Creator)角色:是工厂方法模式的核心,与应用程序无关。任何在模式中创建的对象的工厂类必须实现这个接口。
具体工厂(Concrete Creator)角色:这是实现抽象工厂接口的具体工厂类,包含与应用程序密切相关的逻辑,并且受到应用程序调用以创建产品对象。
抽象产品(Product)角色:工厂方法模式所创建的对象的超类型,也就是产品对象的共同父类或共同拥有的接口。
具体产品(Concrete Product)角色:这个角色实现了抽象产品角色所定义的接口。某具体产品有专门的具体工厂创建,它们之间往往一一对应。
举例说明:
public interface AnimalFactory {
public Animal createAnimal();
}
public class DogFactory implements AnimalFactory{
@Override
public Animal createAnimal() {
return new Dog();
}
}
public class CatFactory implements AnimalFactory{
@Override
public Animal createAnimal() {
return new Cat();
}
}
public interface Animal {
public void makeSound();
}
public class Dog implements Animal{
@Override
public void makeSound() {
System.out.println("汪汪...");
}
}
public class Cat implements Animal{
@Override
public void makeSound() {
System.out.println("喵喵...");
}
}
public class AnimalSound {
public static void main(String[] args) {
Animal animal=new DogFactory().createAnimal();
animal.makeSound();
}
}
运行结果:汪汪...
public class AnimalSound {
public static void main(String[] args) {
Animal animal=new CatFactory().createAnimal();
animal.makeSound();
}
}
运行结果:喵喵...
工厂方法经常用在以下两种情况中:
第一种情况是对于某个产品,调用者清楚地知道应该使用哪个具体工厂服务,实例化该具体工厂,生产出具体的产品 来。
第二种情况,只是需要一种产品,而不想知道也不需要知道究竟是哪个工厂生产的,即最终选用哪个具体工厂的决定权在生产者一方,它们根据当前系统的情况来实例化一个具体的工厂返回给使用者,而这个决策过程这对于使用者来说是透明的。
分享到:
相关推荐
java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式...
Java 经典设计模式讲解以及项目实战 设计模式简介:主要介绍各种设计模式的概念和运用场景等 设计模式综合运用:主要是笔者在实际工作中运用到的一些设计模式综合运用事例的提炼 Spring设计模式简介:主要是讲述...
1.创建型模式:工厂模式、抽象工厂模式、单例模式、建造者模式、原型模式。 2.结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。 4.行为型模式:模板方法模式、命令模式、...
java 设计模式 mvc模式 单例模式 代理 工厂 简单工厂
所有的设计模式Java实现。 第一讲:简单工厂模式 第二讲:工厂方法模式 第三讲:抽象工厂模式 第四讲:工厂模式在开发中的运用 第五讲:单例模式 第六讲:原型模式 第七讲:建造者模式 第八讲:装饰模式 第...
1、爪哇语言结构性模式之变压器模式介绍 2、爪哇语言抽象工厂创立性模式介绍 3、工厂方法创立性模式介绍 4、单态创立性模式介绍 5、单态创立性模式介绍 6、观察者模式介绍7、责任链模式 8、设计模式之Observer 9、...
JAVA 设计模式: 工厂模式 代理模式 迭代模式 责任链模式 源码
例题简单的阐述了Java工厂模式的概念,有利于读者更好地了解Java工厂模式
Java设计模式共有23种,分别为:抽象工厂模式、建造模式、工厂方法模式、原型模式、单例模式、外观模式、适配器模式、桥接模式、组合模式、装饰模式、享元模式、代理模式、命令模式、解释器模式、访问者模式、迭代子...
Java设计模式:三大类工厂方法模式
java设计模式【之】抽象工厂模式【源码】【场景:制作咖啡】 * 抽象工厂 * * 创建对象实例时,不要直接 new 类, 而是把这个new 类的动作放在一个工厂的方法中,并返回。 * 在工厂方法的基础上,进一步抽象工厂...
JAVA设计模式,定义:提供创建对象的接口. 为何使用? 工厂模式是我们最常用的模式了,著名的Jive论坛 ,就大量使用了工厂模式,工厂模式在Java程序系统可以说是随处可见。
创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:...
java设计模式示例 创建型模式(5种):工厂方法模式,抽象工厂模式,单例模式,建造者模式,原型模式。 结构型模式(7种):适配器模式,装饰器模式,代理模式,外观模式,桥接模式,组合模式,享元模式。 行为型...
通过实际例子说明工厂方法模式,并解释工厂方法的原理,特点和使用场景。
Java设计模式之工厂模式 Java设计模式之工厂模式
* 工厂方法模式解决:满足 OCP原则,修改关闭,扩展开放 * * 比如:出现了新款咖啡类 * 旧的咖啡类代码不需要变动,只需要 * * 1.新增对应的咖啡类 * 2.修改工厂类,新增一行判断逻辑 * 3.main方法中的旧...
JAVA设计模式之3种工厂模式
JAVA设计模式(01):创建型-工厂模式【简单工厂模式】(Simple Factory)
创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:...