抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类
下面是一个解释抽象工厂的小例子,定义了三类产品,分别为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 抽象工厂模式
java 设计模式 抽象工厂模式,希望对大家理解设计模式有帮助
java抽象工厂模式实现热带工厂,生产水果等等。比较简单的一个程序。
本人大四,根据老师要求写的一份抽象工厂模式的例子。你们下载下来导入myclipse中即可使用。其中在测试Test.java中,你们可以看看运行效果
抽象工厂模式的简单实现,代码里面有详细的注释,可供初学者学习,有不懂的地方大家可以相互交流
java抽象工厂模式的实现实例.pdf
JAVA抽象工厂模式--演示代码,抽象工厂模式,也称为工厂的工厂,有一个工厂创建其他工厂
java设计模式之抽象工厂模式,实例----手机工厂,一个简单的例子,有助于理解抽象工厂模式。
抽象工厂模式的代码(java), 详细描述了抽象工厂模式的代码架构.
提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类。 通过主板和cpu组装电脑。这里主板的CPU插槽数要和CPU的针脚数相等,也就是说CPU对象和主板对象是有关联的,同时CPU种类和主板的种类也有很多...
Java23种设计模式06抽象工厂模式.pdf
抽象工厂模式实现计算器源码,学习C#设计模式。
介绍的是工厂模式 包括简单工厂模式、工厂方法模式、抽象工厂模式 包括PPT和代码
java设计模式 抽象工厂模式详解 一张图让你彻底明白抽象工厂模式
Java实现的工厂模式,抽象工厂,工厂方法模式
JAVA设计模式之抽象工厂模式,一个不错的列子,逻辑比好清晰,让你更好的理解抽象工厂
java 图书展(抽象工厂模式) java 图书展(抽象工厂模式)
1、抽象工厂模式+反射技术 2、抽象工厂模式+简单工厂模式 3、仅仅是抽象工厂模式
java设计模式【之】抽象工厂模式【源码】【场景:制作咖啡】 * 抽象工厂 * * 创建对象实例时,不要直接 new 类, 而是把这个new 类的动作放在一个工厂的方法中,并返回。 * 在工厂方法的基础上,进一步抽象工厂...
java设计模式之抽象工厂模式实例,希望对大家有所帮助。