抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类
下面是一个解释抽象工厂的小例子,定义了三类产品,分别为Fruit,ElecProduct,Traffic以及它们各自的产品
首先是Fruit
package com.lamp.factory.abstractfactory;
public abstract class Fruit {
public abstract void eat();
}
package com.lamp.factory.abstractfactory;
public class Apple extends Fruit{
@Override
public void eat() {
System.out.println("吃的是水果");
}
}
package com.lamp.factory.abstractfactory;
public class Banana extends Fruit{
@Override
public void eat() {
System.out.println("吃的是香蕉");
}
}
然后是ElecProduct
package com.lamp.factory.abstractfactory;
public abstract class ElecProduct {
public abstract void getName();
}
package com.lamp.factory.abstractfactory;
public class Computer extends ElecProduct{
@Override
public void getName() {
System.out.println("使用的是电脑");
}
}
package com.lamp.factory.abstractfactory;
public class Mobile extends ElecProduct{
@Override
public void getName() {
System.out.println("使用的是手机");
}
}
最后是Traffic
package com.lamp.factory.abstractfactory;
public abstract class Traffic {
public abstract void run();
}
package com.lamp.factory.abstractfactory;
public class Plane extends Traffic{
@Override
public void run() {
System.out.println("飞机在天上飞");
}
}
package com.lamp.factory.abstractfactory;
public class Car extends Traffic{
@Override
public void run() {
System.out.println("开的是car");
}
}
接着定义了一个总的抽象工厂,生产三类产品,具体生产的产品由其工厂类去决定
package com.lamp.factory.abstractfactory;
public abstract class MyAbstractFactory {
public abstract Traffic createTraffic();
public abstract ElecProduct createElecProduct();
public abstract Fruit createFruit();
}
第一个工厂类为DefaultFactory
package com.lamp.factory.abstractfactory;
/**
* 默认工厂生产的是car,Computer,Apple
*
*/
public class DefaultFactory extends MyAbstractFactory {
@Override
public Traffic createTraffic() {
return new Car();
}
@Override
public ElecProduct createElecProduct() {
return new Computer();
}
@Override
public Fruit createFruit() {
return new Apple();
}
}
另一个工厂类为NewFactory
package com.lamp.factory.abstractfactory;
/**
*
* 新工厂生产的是Plane,Mobile,Banana
*
*/
public class NewFactory extends MyAbstractFactory {
@Override
public Traffic createTraffic() {
return new Plane();
}
@Override
public ElecProduct createElecProduct() {
return new Mobile();
}
@Override
public Fruit createFruit() {
return new Banana();
}
}
最后进行测试
package com.lamp.factory.abstractfactory;
/**
*
* 抽象工厂的优点在于当你的工厂发生改变的时候,其不同类型对应的产品也会自动发生改变,就像常见的换肤效果
* 而且对已经存在的产品类型添加产品的时候也方便
* 当然如果要添加新的产品类型,这时需要在总的抽象工厂中添加新的类型以及在相应工厂中做相应修改,这也是抽象
* 工厂不足的地方
*
*/
public class Test {
public static void main(String[] args) {
//MyAbstractFactory factory = new DefaultFactory();
MyAbstractFactory factory = new NewFactory();
ElecProduct e = factory.createElecProduct();
e.getName();
Fruit f = factory.createFruit();
f.eat();
Traffic t = factory.createTraffic();
t.run();
}
}
分享到:
相关推荐
在C++和Java这两种编程语言中,抽象工厂模式的应用相当广泛,特别是在需要跨平台或者需要一组相关的对象协同工作时。 首先,我们来看看C++中的抽象工厂模式。在C++中,我们通常通过定义接口(纯虚函数)来实现抽象...
在Java中,抽象工厂模式通常用于隔离对象的创建和使用,使得代码更加灵活,易于扩展和维护。这个模式的核心在于抽象工厂,它定义了一组创建对象的接口,子类可以根据需要实现这些接口来生成具体的产品。 在Java设计...
### Java抽象工厂模式实现热带工厂 #### 概述 在面向对象编程中,设计模式是一种在特定场景下解决软件设计问题的最佳实践方案。抽象工厂模式是GoF(Gamma、Helm、Johnson 和 Vlissides)所提出的23种设计模式之一...
在"java抽象工厂模式实例----手机工厂"中,我们可以设想有一个手机制造企业,它需要生产不同品牌的手机,如Apple、Samsung等。每个品牌手机都有其独特的零部件,如屏幕、操作系统和摄像头。抽象工厂模式就是用来处理...
总的来说,这份压缩包提供了一个Java实现的抽象工厂模式实例,通过学习和理解这个例子,你可以深入掌握抽象工厂模式的原理和使用场景,这对于提升你的Java编程能力以及软件设计水平非常有帮助。在实际项目中,灵活...
java 抽象工厂模式应用 进阶
在Java中,抽象工厂模式通常包含以下角色: 1. **抽象工厂(Abstract Factory)**:这是工厂模式的核心,定义了一组创建对象的接口,客户端通过这个接口请求创建所需的产品。在这个例子中,这个接口可能是`Abstract...
在"JAVA抽象工厂模式--演示代码"中,我们可以预期会包含以下几个核心概念: 1. **抽象工厂**:这是模式的核心,定义一个创建对象族的接口,但不直接实例化具体的产品。它通常由一个抽象类或接口实现,例如`Abstract...
下面是一个简单的Java抽象工厂模式的示例: ```java // 抽象工厂接口 public interface WidgetFactory { Button createButton(); Label createLabel(); } // Windows具体工厂 public class WinWidgetFactory ...
java抽象工厂模式的实现实例.pdf
提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类。 通过主板和cpu组装电脑。这里主板的CPU插槽数要和CPU的针脚数相等,也就是说CPU对象和主板对象是有关联的,同时CPU种类和主板的种类也有很多...
在Java中,我们可以用类和接口来实现抽象工厂模式。 首先,我们定义一个抽象工厂接口,比如`AbstractFactory`,它声明了一系列创建产品的方法,这些产品是相互关联或依赖的。例如: ```java public interface ...
### Java23种设计模式之抽象工厂模式 #### 模式动机 在探索设计模式的领域里,**抽象工厂模式**是一种重要的模式,它解决了一个关键问题:如何在一个系统中创建一系列相关或相互依赖的对象,而无需指定这些对象的...
抽象工厂模式是一种创建型设计模式,它提供了一种创建对象族的方法,而无需指定它们的具体类。在计算器的实现中,这个模式可以帮助我们构建不同类型的计算器,比如简单计算器、科学计算器等,而无需修改现有代码。 ...
Java抽象工厂模式是一种设计模式,属于创建型模式,它提供了一种创建对象族的接口,而无需指定具体的类。这种模式的关键在于抽象工厂,它是一个接口或者抽象类,定义了一系列用于创建相关或依赖对象的接口。通过这种...
工厂模式分为三种主要类型:简单工厂模式、工厂方法模式和抽象工厂模式。 1. **简单工厂模式** 简单工厂模式是最简单的工厂模式实现,它提供一个静态方法或者类来创建对象,这个类通常被称为“工厂”。用户只需要...
Java抽象工厂模式是一种设计模式,属于创建型模式,它提供了一种创建对象的接口,但允许子类决定实例化哪一个类。在Java编程中,这种模式常用于数据库操作,特别是像增删改查(CRUD)这样的基础数据操作。在这个场景...
抽象工厂模式是设计模式中的一种,它提供了一个创建一系列相关或相互依赖对象的接口,而无需指定它们的具体类。在软件工程中,当系统需要在运行时选择不同的产品族时,或者想要隔离具体产品的实现细节时,抽象工厂...
java设计模式 抽象工厂模式详解 一张图让你彻底明白抽象工厂模式
在"JAVA设计模式之抽象工厂模式"的示例中,可能会包含这些角色的实现以及如何在实际场景中应用抽象工厂模式的解释和示例代码。这个压缩包可能包含了详细的设计和实现,帮助学习者深入理解抽象工厂模式的工作原理及其...