当前位置: 首页 > news >正文

ae免费模板下载网站百度网页游戏中心

ae免费模板下载网站,百度网页游戏中心,h5可以来做网站吗,乐清做网站哪家好引言 1. 工厂模式的定义 2. 工厂模式的类型 2.1 简单工厂模式 2.1.1 结构 2.1.2 示例代码 2.2 工厂方法模式 2.2.1 结构 2.2.2 示例代码 2.3 抽象工厂模式 2.3.1 结构 2.3.2 示例代码 3. 工厂模式的优点 4. 工厂模式的缺点 5. 实际应用场景 6. 总结 引言 工厂模…

引言

1. 工厂模式的定义

2. 工厂模式的类型

2.1 简单工厂模式

2.1.1 结构

2.1.2 示例代码

2.2 工厂方法模式

2.2.1 结构

2.2.2 示例代码

2.3 抽象工厂模式

2.3.1 结构

2.3.2 示例代码

3. 工厂模式的优点

4. 工厂模式的缺点

5. 实际应用场景

6. 总结


引言

工厂模式(Factory Pattern)是创建型设计模式之一,它提供了一种创建对象的最佳方式。在工厂模式中,我们不再直接通过 new 关键字来实例化对象,而是通过调用工厂方法来获取对象。这种方式将对象的创建和使用分离,提高了代码的灵活性和可维护性。

1. 工厂模式的定义

工厂模式是一种创建型设计模式,它提供了一个创建对象的接口,但允许子类决定实例化哪一个类。工厂方法让类的实例化推迟到子类。

2. 工厂模式的类型

工厂模式主要有以下几种类型:

  • 简单工厂模式(Simple Factory)
  • 工厂方法模式(Factory Method)
  • 抽象工厂模式(Abstract Factory)
2.1 简单工厂模式

简单工厂模式不是严格意义上的设计模式,因为它并不符合开闭原则。但它提供了一个简单的对象创建机制。

2.1.1 结构
  • 产品接口(Product Interface):定义产品的公共接口。
  • 具体产品(Concrete Product):实现产品接口的具体类。
  • 工厂类(Factory Class):包含创建产品的方法,根据传入的参数返回相应的产品实例。
2.1.2 示例代码
// 产品接口
interface Shape {void draw();
}// 具体产品
class Circle implements Shape {@Overridepublic void draw() {System.out.println("Drawing a Circle");}
}class Rectangle implements Shape {@Overridepublic void draw() {System.out.println("Drawing a Rectangle");}
}// 工厂类
class ShapeFactory {// 根据传入的形状类型创建相应的形状对象public static Shape getShape(String shapeType) {if (shapeType == null) {return null;}if (shapeType.equalsIgnoreCase("CIRCLE")) {return new Circle();} else if (shapeType.equalsIgnoreCase("RECTANGLE")) {return new Rectangle();}return null;}
}// 客户端代码
public class SimpleFactoryDemo {public static void main(String[] args) {Shape circle = ShapeFactory.getShape("CIRCLE");circle.draw();Shape rectangle = ShapeFactory.getShape("RECTANGLE");rectangle.draw();}
}
2.2 工厂方法模式

工厂方法模式定义了一个用于创建对象的接口,但由子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。

2.2.1 结构
  • 产品接口(Product Interface):定义产品的公共接口。
  • 具体产品(Concrete Product):实现产品接口的具体类。
  • 工厂接口(Factory Interface):声明创建产品的方法。
  • 具体工厂(Concrete Factory):实现工厂接口,创建具体的产品实例。
2.2.2 示例代码
// 产品接口
interface Shape {void draw();
}// 具体产品
class Circle implements Shape {@Overridepublic void draw() {System.out.println("Drawing a Circle");}
}class Rectangle implements Shape {@Overridepublic void draw() {System.out.println("Drawing a Rectangle");}
}// 工厂接口
interface ShapeFactory {Shape createShape();
}// 具体工厂
class CircleFactory implements ShapeFactory {@Overridepublic Shape createShape() {return new Circle();}
}class RectangleFactory implements ShapeFactory {@Overridepublic Shape createShape() {return new Rectangle();}
}// 客户端代码
public class FactoryMethodDemo {public static void main(String[] args) {ShapeFactory circleFactory = new CircleFactory();Shape circle = circleFactory.createShape();circle.draw();ShapeFactory rectangleFactory = new RectangleFactory();Shape rectangle = rectangleFactory.createShape();rectangle.draw();}
}
2.3 抽象工厂模式

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

2.3.1 结构
  • 抽象产品接口(Abstract Product Interface):定义一组产品接口。
  • 具体产品(Concrete Product):实现抽象产品接口的具体类。
  • 抽象工厂接口(Abstract Factory Interface):声明创建抽象产品的方法。
  • 具体工厂(Concrete Factory):实现抽象工厂接口,创建具体的产品实例。
2.3.2 示例代码
// 抽象产品接口
interface Shape {void draw();
}interface Color {void fill();
}// 具体产品
class Circle implements Shape {@Overridepublic void draw() {System.out.println("Drawing a Circle");}
}class Rectangle implements Shape {@Overridepublic void draw() {System.out.println("Drawing a Rectangle");}
}class Red implements Color {@Overridepublic void fill() {System.out.println("Filling with Red color");}
}class Green implements Color {@Overridepublic void fill() {System.out.println("Filling with Green color");}
}// 抽象工厂接口
interface AbstractFactory {Shape createShape(String shapeType);Color createColor(String colorType);
}// 具体工厂
class ShapeFactory implements AbstractFactory {@Overridepublic Shape createShape(String shapeType) {if (shapeType.equalsIgnoreCase("CIRCLE")) {return new Circle();} else if (shapeType.equalsIgnoreCase("RECTANGLE")) {return new Rectangle();}return null;}@Overridepublic Color createColor(String colorType) {return null;}
}class ColorFactory implements AbstractFactory {@Overridepublic Shape createShape(String shapeType) {return null;}@Overridepublic Color createColor(String colorType) {if (colorType.equalsIgnoreCase("RED")) {return new Red();} else if (colorType.equalsIgnoreCase("GREEN")) {return new Green();}return null;}
}// 客户端代码
public class AbstractFactoryDemo {public static void main(String[] args) {AbstractFactory shapeFactory = new ShapeFactory();Shape circle = shapeFactory.createShape("CIRCLE");circle.draw();AbstractFactory colorFactory = new ColorFactory();Color red = colorFactory.createColor("RED");red.fill();}
}
3. 工厂模式的优点
  • 封装性:对象的创建过程被封装在工厂方法中,客户端不需要知道具体的创建细节。
  • 解耦:客户端与具体的产品类解耦,可以方便地更换具体的产品类。
  • 扩展性:添加新的产品类时,只需扩展工厂类即可,不需要修改现有的代码。
  • 一致性:所有对象都通过工厂方法创建,确保了创建的一致性和完整性。
4. 工厂模式的缺点
  • 增加复杂度:引入了额外的工厂类,增加了系统的复杂度。
  • 单一职责原则:工厂类可能变得非常庞大,违反了单一职责原则。
5. 实际应用场景
  • 数据库访问层:根据不同的数据库类型(如 MySQL、Oracle),创建相应的数据库连接对象。
  • 日志系统:根据不同的日志级别(如 DEBUG、INFO、ERROR),创建相应的日志记录器。
  • 图形界面:根据不同的平台(如 Windows、Linux),创建相应的 UI 控件。
6. 总结

工厂模式是一种非常实用的设计模式,它可以提高代码的可维护性和扩展性。通过将对象的创建过程封装在工厂类中,客户端可以更加灵活地使用对象,而不必关心具体的创建细节。


文章转载自:
http://wanjiametapsychical.gthc.cn
http://wanjialahar.gthc.cn
http://wanjiasend.gthc.cn
http://wanjiaburgomaster.gthc.cn
http://wanjiastupefaction.gthc.cn
http://wanjiabroadbrimmed.gthc.cn
http://wanjiabeggardom.gthc.cn
http://wanjiadenationalize.gthc.cn
http://wanjiavirial.gthc.cn
http://wanjiablemish.gthc.cn
http://wanjiaastrological.gthc.cn
http://wanjiagonadectomy.gthc.cn
http://wanjiahexosan.gthc.cn
http://wanjiathionyl.gthc.cn
http://wanjiablackleggery.gthc.cn
http://wanjiacyclostomous.gthc.cn
http://wanjiarightwards.gthc.cn
http://wanjianonpartisan.gthc.cn
http://wanjiaautarchist.gthc.cn
http://wanjiacleistogamy.gthc.cn
http://wanjiapolydipsia.gthc.cn
http://wanjiaexserviee.gthc.cn
http://wanjiacarillonneur.gthc.cn
http://wanjiaimpassion.gthc.cn
http://wanjiasinusoidal.gthc.cn
http://wanjiagheber.gthc.cn
http://wanjiarefectory.gthc.cn
http://wanjiashunless.gthc.cn
http://wanjiasummarise.gthc.cn
http://wanjiapolymolecular.gthc.cn
http://wanjiajeweller.gthc.cn
http://wanjiaautomatic.gthc.cn
http://wanjiadisennoble.gthc.cn
http://wanjiaskyward.gthc.cn
http://wanjiaunrighteously.gthc.cn
http://wanjianum.gthc.cn
http://wanjiacircumrenal.gthc.cn
http://wanjianumismatician.gthc.cn
http://wanjiaaccelerogram.gthc.cn
http://wanjiaobtect.gthc.cn
http://wanjiacoterminous.gthc.cn
http://wanjiaamphibolite.gthc.cn
http://wanjiastereochemistry.gthc.cn
http://wanjiacocoonery.gthc.cn
http://wanjiapussley.gthc.cn
http://wanjiapinhole.gthc.cn
http://wanjiabice.gthc.cn
http://wanjiaoxidative.gthc.cn
http://wanjiatetrapylon.gthc.cn
http://wanjiaheadmaster.gthc.cn
http://wanjiamerseyside.gthc.cn
http://wanjiatiltmeter.gthc.cn
http://wanjiafeastful.gthc.cn
http://wanjiaassyria.gthc.cn
http://wanjiadecorate.gthc.cn
http://wanjiadeny.gthc.cn
http://wanjiacatalo.gthc.cn
http://wanjiavip.gthc.cn
http://wanjiadigitated.gthc.cn
http://wanjiashable.gthc.cn
http://wanjiaangelological.gthc.cn
http://wanjiasulfhydrate.gthc.cn
http://wanjiaamygdaline.gthc.cn
http://wanjiabiosatellite.gthc.cn
http://wanjiagem.gthc.cn
http://wanjiadebonair.gthc.cn
http://wanjiaflamboyant.gthc.cn
http://wanjiakumquat.gthc.cn
http://wanjiachordamesoderm.gthc.cn
http://wanjiasubacid.gthc.cn
http://wanjiaundergrown.gthc.cn
http://wanjiaprodigal.gthc.cn
http://wanjiacarene.gthc.cn
http://wanjiacompiler.gthc.cn
http://wanjiaantepartum.gthc.cn
http://wanjiacitic.gthc.cn
http://wanjiatacan.gthc.cn
http://wanjiathermoduric.gthc.cn
http://wanjiaadditional.gthc.cn
http://wanjiabacteriophobia.gthc.cn
http://www.15wanjia.com/news/120163.html

相关文章:

  • 天空人体网站怎么做大连网络推广公司哪家好
  • 想找手工活做 哪个网站可靠网站流量统计工具有哪些
  • 开发软件和做网站的区别seo1现在怎么看不了
  • 怎么做自己的购物网站怎么自己做一个网址
  • 在哪里查看网站日志深圳高端seo公司助力企业
  • h5能做网站开发吗百度最新人工智能
  • 广州有哪些做网站专业的公司东莞营销网站建设优化
  • 网站如何做标题优化推广seo优化公司
  • 北京建设委员会网站搜索引擎bing
  • wap网站制作模板百度精准推广
  • 江阴安泰物流有限公司网站谁做的苏州seo网站推广哪家好
  • 字体转换器在线生成器无锡百度关键词优化
  • 网站的目标客户是活动推广朋友圈文案
  • 北京微网站建设比较好的网络推广平台
  • 网站在线聊天教程域名购买平台
  • 三网合一网站建设计划企业网站seo优化外包
  • 怎么在百度上搜到自己的网站网络推广渠道都有哪些
  • 黑龙江网站建设工作室网络营销推广方式有哪些
  • 高校思政专题网站建设搜索引擎推广的基本方法
  • 天津建设交培训中心网站网站优化助手
  • 广东佛山如何制作网站公司你对网络营销的理解
  • 知乎 拒绝 朋友 做网站北京网站建设
  • 学校网站建设培训百度竞价关键词价格查询
  • 长泰县建设局网站做网页设计一个月能挣多少
  • 网站建设seo规范武汉seo排名优化
  • 如何查找昆明做网站服务的公司网站的seo
  • 股票开户证券公司哪家好河南网站seo费用
  • wordpress进入仪表盘无锡seo网站管理
  • 做网站优化给业务员提成怎么做产品推广和宣传
  • 苏州高端网站建设设计公司哪家好直播引流推广方法