package com.macrotea.pattern.factory.abstr;
import com.macrotea.pattern.factory.base.Food;
import com.macrotea.pattern.factory.base.Vehicle;
import com.macrotea.pattern.factory.base.Weapon;
public abstract class AbstractFactory {
public abstract Food createFood();
public abstract Vehicle createVehicle();
public abstract Weapon createWeapon();
}
package com.macrotea.pattern.factory.ext;
import com.macrotea.pattern.factory.abstr.AbstractFactory;
import com.macrotea.pattern.factory.base.Food;
import com.macrotea.pattern.factory.base.Vehicle;
import com.macrotea.pattern.factory.base.Weapon;
import com.macrotea.pattern.factory.sub.DongfengCar;
import com.macrotea.pattern.factory.sub.LongjingTea;
import com.macrotea.pattern.factory.sub.XiaolongPlane;
public class ChinaFactory extends AbstractFactory{
@Override
public Food createFood() {
return new LongjingTea();
}
@Override
public Vehicle createVehicle() {
return new DongfengCar();
}
@Override
public Weapon createWeapon() {
return new XiaolongPlane();
}
}
package com.macrotea.pattern.factory.ext;
import com.macrotea.pattern.factory.abstr.AbstractFactory;
import com.macrotea.pattern.factory.base.Food;
import com.macrotea.pattern.factory.base.Vehicle;
import com.macrotea.pattern.factory.base.Weapon;
import com.macrotea.pattern.factory.sub.Car;
import com.macrotea.pattern.factory.sub.Gun;
import com.macrotea.pattern.factory.sub.Nut;
public class DefaultFactory extends AbstractFactory{
@Override
public Food createFood() {
return new Nut();
}
@Override
public Vehicle createVehicle() {
return new Car();
}
@Override
public Weapon createWeapon() {
return new Gun();
}
}
package com.macrotea.pattern.factory.base;
public abstract class Food {
public abstract void eat();
}
package com.macrotea.pattern.factory.base;
public abstract class Vehicle {
public abstract void run();
}
package com.macrotea.pattern.factory.base;
public abstract class Weapon {
public abstract void shoot();
}
package com.macrotea.pattern.factory.sub;
import com.macrotea.pattern.factory.base.Vehicle;
public class Car extends Vehicle{
@Override
public void run() {
System.out.println("Car-run()");
}
}
package com.macrotea.pattern.factory.sub;
import com.macrotea.pattern.factory.base.Vehicle;
public class DongfengCar extends Vehicle {
@Override
public void run() {
System.out.println("东风牌货车开动...");
}
}
package com.macrotea.pattern.factory.sub;
import com.macrotea.pattern.factory.base.Weapon;
public class Gun extends Weapon{
@Override
public void shoot() {
System.out.println("Gun-shoot()");
}
}
package com.macrotea.pattern.factory.sub;
import com.macrotea.pattern.factory.base.Food;
public class LongjingTea extends Food {
@Override
public void eat() {
System.out.println("来杯龙井...");
}
}
package com.macrotea.pattern.factory.sub;
import com.macrotea.pattern.factory.base.Food;
public class Nut extends Food{
@Override
public void eat() {
System.out.println("Nut-eat()");
}
}
package com.macrotea.pattern.factory.sub;
import com.macrotea.pattern.factory.base.Weapon;
public class XiaolongPlane extends Weapon {
@Override
public void shoot() {
System.out.println("枭龙歼灭机射击...");
}
}
package com.macrotea.pattern.factory.test;
import com.macrotea.pattern.factory.abstr.AbstractFactory;
import com.macrotea.pattern.factory.base.Food;
import com.macrotea.pattern.factory.base.Vehicle;
import com.macrotea.pattern.factory.base.Weapon;
import com.macrotea.pattern.factory.ext.DefaultFactory;
public class Mainer {
public static void main(String[] args) {
/*默认工厂*/
AbstractFactory defFactory=new DefaultFactory();
//食物
Food food=defFactory.createFood();
food.eat();
//交通工具
Vehicle vehicle=defFactory.createVehicle();
vehicle.run();
//武器
Weapon weapon=defFactory.createWeapon();
weapon.shoot();
/*
中国工厂
AbstractFactory cnFactory=new ChinaFactory();
//食物
Food food=cnFactory.createFood();
food.eat();
//交通工具
Vehicle vehicle=cnFactory.createVehicle();
vehicle.run();
//武器
Weapon weapon=cnFactory.createWeapon();
weapon.shoot();
*/
}
}
抽象工厂方便控制产品系列
普通工厂方便控制产品种类
分享到:
相关推荐
在软件设计模式中,工厂模式是一组非常基础且实用的设计模式,主要分为简单工厂模式、工厂方法模式和抽象工厂模式。这些模式都是为了解决对象创建的问题,通过封装对象的创建过程,使得代码更加灵活,易于扩展和维护...
设计模式 - 抽象工厂模式 抽象工厂模式是一种创建型设计模式,它提供了一种方式来创建一组相关或相互依赖的对象,而不需要指定具体的类。该模式允许客户端使用抽象的接口来创建一组相关的产品,而不需要关系实际...
抽象工厂模式是设计模式中的一种创建型模式,它提供了一种创建对象集合的接口,而无需指定具体的类。这种模式允许系统独立于如何创建、组合和表示产品对象的细节进行设计,为产品族(一组相关或相互依赖的对象)提供...
java设计模式----抽象工厂模式,简单工厂模式代码 代码内部
抽象工厂模式是设计模式中的一种创建型模式,它提供了一种创建对象族的接口,而无需指定其具体的类。这种模式的关键在于“族”,即一系列相关的对象。在抽象工厂模式中,我们创建一个抽象工厂接口,然后为每一种具体...
抽象工厂模式是设计模式中的一种,它属于创建型模式,主要解决的是当系统有多个产品族,而每个产品族又有多个具体产品时,如何组织代码的问题。在Java中,抽象工厂模式提供了一种创建对象组的方式,使得这些对象属于...
熵增教育-熵增学院VIP精品课程录播:简单工厂模式-工厂方法模式-抽象工厂模式
设计模式---抽象工厂模式(Abstract Factory)-UML图 (StarUML)
抽象工厂模式是设计模式中的一种创建型模式,它提供了一个创建对象族的接口,而无需指定它们的具体类。在.NET开发中,这种模式常用于实现多数据库连接,比如连接到MySQL、SQL Server或Oracle等不同的数据库系统。...
java常用设计模式-抽象工厂模式 抽象工厂模式(Abstract Factory Pattern)是一种创建型设计模式,它通过定义一个创建对象的接口来创建对象,但将具体实现的决定留给子类来决定。在抽象工厂模式中,接口是负责创建...
抽象工厂模式是软件设计模式中的一种创建型模式,它提供了一种创建对象族(一组具有相互依赖关系的对象)的方法,而无需指定它们的具体类。在Java编程中,抽象工厂模式通常用于实现跨平台或者跨框架的接口,使得系统...
抽象工厂模式是创建型设计模式中的一种,用于创建一系列相关或相互依赖的对象,而无需指定其具体类。抽象工厂模式强调产品的系列,对于有多个产品等级结构的系统非常有用。在抽象工厂模式中,一个工厂负责创建多个...
"抽象工厂"是设计模式中的一种,属于创建型模式,它提供了一种创建对象族的接口,而无需指定它们的具体类。这个模式的核心在于隔离了产品对象的创建过程,使得系统对具体产品的依赖最小化,从而增强了系统的灵活性和...
他是一种模式,计算机软件开发的一种模式,可以兼容多个数据库,以及数据库之间交互
抽象工厂模式是创建型设计模式的一种,它提供了一种创建对象族(一组具有相互依赖关系的对象)的方法,而无需指定具体类。这种模式的核心在于它允许客户端代码与具体实现细节解耦,使得更换一个产品族变得更为容易。...
抽象工厂模式是设计模式中的一种创建型模式,它提供了一种创建对象族的接口,而无需指定具体的类。这种模式允许客户端使用一个通用接口来创建一组相关或相互依赖的对象,而无需了解它们的具体实现。在Java或其他面向...
在众多设计模式中,“抽象工厂”(Abstract Factory)模式是一种创建型模式,它提供了一个接口,用于创建相关或依赖对象的家族,而不必指定它们的具体类。这一模式深受哲学的影响,特别是“形而上学”的概念,探讨了...
抽象工厂模式是设计模式中的一种创建型模式,它提供了一个创建对象族的接口,而具体的对象族由子类决定。这种模式允许系统在不指定具体产品的前提下,能够创建一系列相关或相互依赖的对象,同时避免了硬编码所造成的...
PHP实现的抽象工厂模式,大家可以下载来参考学习下。
本篇文章将对三种主要的工厂模式:简单工厂、工厂方法和抽象工厂进行深入的对比和总结。 **简单工厂模式** 是最基础的工厂模式形式,它提供一个静态方法或类来创建对象。在这个模式中,工厂是负责创建对象的中心...