当前位置: 首页> 科技> 能源 > 学电脑培训多少钱_企业首页html源码_上海谷歌seo公司_应用下载app排行榜

学电脑培训多少钱_企业首页html源码_上海谷歌seo公司_应用下载app排行榜

时间:2025/7/11 18:33:01来源:https://blog.csdn.net/weixin_51395608/article/details/143958738 浏览次数:0次
学电脑培训多少钱_企业首页html源码_上海谷歌seo公司_应用下载app排行榜

目录

  • 1. 简介
  • 2. 代码
    • 2.1 CarFactory.java
    • 2.2 CarDoorFactory.java
    • 2.3 CarFrameFactory.java
    • 2.4 CarBasePlateFactory.java
    • 2.5 CarDoor.java
    • 2.6 CarFrame.java
    • 2.7 CarBasePlate.java
    • 2.8 Car.java
    • 2.9 Test.java
  • 3. 总结
    • 3.1 使用场景
      • 3.2 优缺点

1. 简介

抽象工厂模式提供了创建一系列相关或互相依赖对象的接口

抽象工厂模式是一种创建对象的设计模式。它提供了一种创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。简单来说,它就像是一个工厂的总规划师,这个工厂可以生产不同系列的产品,每种系列包含多种相关的产品,但是具体的生产细节(也就是具体类)被隐藏起来了。

  • 抽象工厂模式通常包含四个必要角色和一个可选角色:

    • 抽象工厂(Abstract Factory):定义一个接口或抽象类,它声明了一组用于创建相关产品对象的方法,这些方法的返回值通常是一个抽象产品。
    • 具体工厂(Concrete Factory):它实现了抽象工厂中声明的创建产品对象的方法,同一产品等级下根据不同的产品参数,创建一个具体产品对象。
    • 抽象产品(Abstract Product):定义一个接口或抽象类,表示同类产品,在抽象产品中声明了产品所具有的方法。
    • 具体产品(Concrete Product):它定义了抽象产品下所拥有的具体产品,实现了抽象产品接口中定义的业务方法。
    • 工厂创造器(可选角色):提供一个静态方法,根据传入不同的工厂类型参数,创造一个具体的工厂类,返回值用抽象工厂接收。

在这里插入图片描述

2. 代码

2.1 CarFactory.java

interface CarFactory {// 获取车门的对象public CarDoor getCarDoor();// 获取车架对象public CarFrame getCarFrame();// 获取底盘对象public CarBasePlate getCarBasePlate();// 制作汽车public void make();}

2.2 CarDoorFactory.java

public abstract class CarDoorFactory {public abstract void make();
}

2.3 CarFrameFactory.java

public abstract class CarFrameFactory {public abstract void make();
}

2.4 CarBasePlateFactory.java

public abstract class CarBasePlateFactory {public abstract void make();
}

2.5 CarDoor.java

public class CarDoor extends CarDoorFactory {@Overridepublic void make(){System.out.println("生产汽车门");}
}

2.6 CarFrame.java

public class CarFrame extends CarFrameFactory {@Overridepublic void make() {System.out.println("制作车架子");}
}

2.7 CarBasePlate.java

public class CarBasePlate extends CarBasePlateFactory {@Overridepublic void make(){System.out.println("生产汽车门");}
}

2.8 Car.java

public class Car implements CarFactory {private CarDoor carDoor = null;private CarFrame carFrame = null;private CarBasePlate carBasePlate = null;@Overridepublic CarDoor getCarDoor() {carDoor = new CarDoor();return carDoor;}@Overridepublic CarFrame getCarFrame() {carFrame = new CarFrame();return carFrame;}@Overridepublic CarBasePlate getCarBasePlate() {carBasePlate = new CarBasePlate();return carBasePlate;}@Overridepublic void make() {carDoor.make();carFrame.make();carBasePlate.make();System.out.println("Car is made.");}}

2.9 Test.java

public class Test {public static void main(String[] args) {Car car = new Car();car.getCarDoor();car.getCarFrame();car.getCarBasePlate();car.make();}
}

运行结果:

生产汽车门
制作车架子
生产汽车门
Car is made.

3. 总结

3.1 使用场景

  1. 创建对象族
    当需要创建一系列相关的对象,并且这些对象的创建过程比较复杂或者它们之间有一定的关联关系时,抽象工厂模式非常有用。例如,在一个图形用户界面(GUI)库中,不同的操作系统(如 WindowsMacLinux)有不同的窗口、按钮和文本框等组件。可以创建一个抽象工厂来生成这些相关的 GUI 组件,然后针对每个操作系统有一个具体工厂来创建符合该操作系统风格的组件。
  2. 代码的可维护性和可扩展性
    它使得代码更容易维护和扩展。如果要添加一个新的产品系列,只需要创建新的具体工厂和具体产品类,而不需要修改原有的代码。比如,在游戏开发中,如果要添加一个科幻风格的游戏资产系列,只需要创建Sci - FiGameAssetFactory和对应的Sci - FiCharacterSci - FiPropSci - FiScene等具体产品类,原有的奇幻风格等游戏资产的代码不受影响。

3.2 优缺点

  1. 优点
  • 可维护性好:将对象的创建和使用分离,使得代码的职责更加清晰。如果产品对象的创建逻辑发生变化,只需要修改相应的工厂类,而不会影响到使用这些对象的其他代码部分。
  • 可扩展性强:可以方便地添加新的产品系列或者新的产品,符合开闭原则(对扩展开放,对修改关闭)。
  • 产品一致性高:因为一个具体工厂创建的是一系列相关的产品,这些产品在风格或者功能上能够保持一致。
  1. 缺点
  • 代码复杂:相比于简单的工厂模式,抽象工厂模式的代码结构更加复杂,涉及到更多的类和接口。
  • 不适合简单场景:如果只是创建单个简单的对象,使用抽象工厂模式会增加不必要的复杂性。
关键字:学电脑培训多少钱_企业首页html源码_上海谷歌seo公司_应用下载app排行榜

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: