抽象工厂模式(Abstract Factory)

博客介绍了抽象工厂模式,即提供创建相关或依赖对象的接口,无需指定具体类。通常在运行时创建具体工厂类实例来创建具体产品对象。还给出了抽象工厂、具体工厂、抽象产品、产品和客户端的定义及代码示例,展示了该模式的实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

提供一个创建一系列相关或相互依赖的对象的接口,而不需指定它们具体的类。

通常在run-time式创建一个ConcreateFactory类的单体实例。这个ConcreteFactory创建ConcreteProduct对象。为了创建不同的ConcreteProduct对象,clients需要使用不同的ConcreteFactory

<shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"></shapetype><stroke joinstyle="miter"></stroke><formulas></formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f><lock aspectratio="t" v:ext="edit"></lock><shape id="_x0000_i1025" style="WIDTH: 431.25pt; HEIGHT: 228pt" type="#_x0000_t75"></shape><imagedata o:title="" src="file:///C:%5CDOCUME~1%5CADMINI~1%5CLOCALS~1%5CTemp%5Cmsohtml1%5C01%5Cclip_image001.png"></imagedata>

AbstractFactoryContinentFactory

定义一个接口,用来创建抽象products

ConcreteFactoryAfrciaFactory,AmericaFactory

实现创建具体的Products

AbstractProductHerbivoreCarnivore

声明一个接口表示一种product类型

ProductWildebeestLionBisonWolf

定义被相关Concrete factory创建的product对象

实现AbstractProduct接口

ClientAnimalWorld

使用AbstractFactoryAbstractProduct

代码:

//AbstractFactory

public interface ContinentFactory{

public Herbivore CreateHerbivore();

public Carnivore CreateCarnivore();

}

//ConcreteFactory

public class AfricaFactory implements ContinentFactory{

public Herbivore CreateHerbivore(){

return new Wildebeest();

}

public Carnivore CreateCarnivore(){

return new Lion();

}

}

public class AmericaFactory implements ContinentFactory{

public Herbivore CreateHerbivore(){

return new Bison();

}

public Carnivore CreateCarnivore(){

return new Wolf();

}

}

//AbstractProduct

public interface Herbivore{

}

public interface Carnivore{

public void Eat(Herbivore h);

}

//Product

public class Wildebeest implements Herbivore{

}

public class Lion implements Carnivore{

public void Eat(Herbivore h){

System.out.println(“Lion eats “ +h.getName());

}

}

public class Bison implements Herbivore{

}

public class Wolf implements Carnivore{

public void Eat(Herbivore h){

System.out.println(“Wolf eats “ +h.getName());

}

}

//Client

public class AnimalWorld{

private Herbivore herbivore;

private Carnivore carnivore;

public AnimalWorld(ContinentFactory factory){

carnivore=factory. CreateCarnivore();

herbivore=factory. CreateHerbivore();

}

//Mehtods

public void RunFoodChain(){

carnivore.Eat(herbivore);

}

public static void main(String[] args){

AnimalWorld world=new AnimalWorld(new AfricaFactory());

world.RunFoodChain();

world=new AnimalWorld(new AmericaFactory());

world.RunFoodChain();

}

Output

Lion eats Wildebeest
Wolf eats Bison

资源下载链接为: https://pan.quark.cn/s/22ca96b7bd39 在当今的软件开发领域,自动化构建与发布是提升开发效率和项目质量的关键环节。Jenkins Pipeline作为一种强大的自动化工具,能够有效助力Java项目的快速构建、测试及部署。本文将详细介绍如何利用Jenkins Pipeline实现Java项目的自动化构建与发布。 Jenkins Pipeline简介 Jenkins Pipeline是运行在Jenkins上的一套工作流框架,它将原本分散在单个或多个节点上独立运行的任务串联起来,实现复杂流程的编排与可视化。它是Jenkins 2.X的核心特性之一,推动了Jenkins从持续集成(CI)向持续交付(CD)及DevOps的转变。 创建Pipeline项目 要使用Jenkins Pipeline自动化构建发布Java项目,首先需要创建Pipeline项目。具体步骤如下: 登录Jenkins,点击“新建项”,选择“Pipeline”。 输入项目名称和描述,点击“确定”。 在Pipeline脚本中定义项目字典、发版脚本和预发布脚本。 编写Pipeline脚本 Pipeline脚本是Jenkins Pipeline的核心,用于定义自动化构建和发布的流程。以下是一个简单的Pipeline脚本示例: 在上述脚本中,定义了四个阶段:Checkout、Build、Push package和Deploy/Rollback。每个阶段都可以根据实际需求进行配置和调整。 通过Jenkins Pipeline自动化构建发布Java项目,可以显著提升开发效率和项目质量。借助Pipeline,我们能够轻松实现自动化构建、测试和部署,从而提高项目的整体质量和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值