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

公司要建设网站wordpress别名

公司要建设网站,wordpress别名,金华做网站公司,文山州建设局信息网站一、抽象工厂模式 概述 抽象工厂模式#xff08;Abstract Factory Pattern#xff09;是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式#xff0c;它提供了一种创建对象的最佳方式 在抽象工厂模式中#xff0c;接口是…一、抽象工厂模式 概述 抽象工厂模式Abstract Factory Pattern是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式它提供了一种创建对象的最佳方式 在抽象工厂模式中接口是负责创建一个相关对象的工厂不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象 抽象工厂模式提供了一种创建一系列相关或相互依赖对象的接口而无需指定具体实现类。通过使用抽象工厂模式可以将客户端与具体产品的创建过程解耦使得客户端可以通过工厂接口来创建一族产品 主要解决主要解决接口选择的问题 何时使用我们明确地计划不同条件下创建不同实例时 优缺点 优点 当一个产品族中的多个对象被设计成一起工作时它能保证客户端始终只使用同一个产品族中的对象 缺点 产品族扩展非常困难要增加一个系列的某一产品既要在抽象的 Creator 里加代码又要在具体的里面加代码 1. 各个角色介绍 1.1抽象工厂Abstract Factory 声明了一组用于创建产品对象的方法每个方法对应一种产品类型。抽象工厂可以是接口或抽象类 1.2 具体工厂Concrete Factory 实现了抽象工厂接口负责创建具体产品对象的实例 1.3 抽象产品Abstract Product 定义了一组产品对象的共同接口或抽象类描述了产品对象的公共方法 1.4 具体产品Concrete Product 实现了抽象产品接口定义了具体产品的特定行为和属性 2. UML图 将创建 Shape 和 Color 接口和实现这些接口的实体类。下一步是创建抽象工厂类 AbstractFactory。接着定义工厂类 ShapeFactory 和 ColorFactory这两个工厂类都是扩展了 AbstractFactory。然后创建一个工厂创造器/生成器类 FactoryProducer AbstractFactoryPatternDemo 类使用 FactoryProducer 来获取 AbstractFactory 对象。它将向 AbstractFactory 传递形状信息 ShapeCIRCLE / RECTANGLE / SQUARE以便获取它所需对象的类型。同时它还向 AbstractFactory 传递颜色信息 ColorRED / GREEN / BLUE以便获取它所需对象的类型 3. 具体例子和代码 角色分配 Shape形状接口 Circle圆形实现形状接口Rectangle三角形实现形状接口Square正方形实现形状接口 Color形状接口 Red圆形实现形状接口Green三角形实现形状接口Blue正方形实现形状接口 AbstractFactory抽象工厂 3.1 形状接口以及实现类 Shape package com.vinjcent.prototype.abstractFactory;/*** author vinjcent* description 形状接口*/ public interface Shape {/*** 绘图*/void draw();}Circle package com.vinjcent.prototype.abstractFactory;/*** author vinjcent* description 实现形状接口-圆形*/ public class Circle implements Shape {Overridepublic void draw() {System.out.println(Inside Circle::draw() method.);}}Rectangle package com.vinjcent.prototype.abstractFactory;/*** author vinjcent* description 实现形状接口-长方形*/ public class Rectangle implements Shape {Overridepublic void draw() {System.out.println(Inside Rectangle::draw() method.);}}Square package com.vinjcent.prototype.abstractFactory;/*** author vinjcent* description 实现形状接口-正方形*/ public class Square implements Shape {Overridepublic void draw() {System.out.println(Inside Square::draw() method.);}}3.2 颜色接口以及实现类 Color package com.vinjcent.prototype.abstractFactory;/*** author vinjcent* description 颜色接口*/ public interface Color {/*** 颜色填充*/void fill();}Red package com.vinjcent.prototype.abstractFactory;/*** author vinjcent* description 继承颜色接口-红色*/ public class Red implements Color {Overridepublic void fill() {System.out.println(Inside Red::fill() method.);}}Green package com.vinjcent.prototype.abstractFactory;/*** author vinjcent* description 继承颜色接口-绿色*/ public class Green implements Color {Overridepublic void fill() {System.out.println(Inside Green::fill() method.);}}Blue package com.vinjcent.prototype.abstractFactory;/*** author vinjcent* description 继承颜色接口-蓝色*/ public class Blue implements Color {Overridepublic void fill() {System.out.println(Inside Blue::fill() method.);}}3.3 抽象工厂类以及实现类 AbstractFactory package com.vinjcent.prototype.abstractFactory;/*** author vinjcent* description 抽象工厂*/ public abstract class AbstractFactory {/*** 构造颜色实体** param color 颜色名称* return 颜色实体*/public abstract Color getColor(String color);/*** 构造形状实体** param shape 形状名称* return 形状实体*/public abstract Shape getShape(String shape);}ColorFactory package com.vinjcent.prototype.abstractFactory;/*** author vinjcent* description 颜色工厂*/ public class ColorFactory extends AbstractFactory {Overridepublic Shape getShape(String shapeType) {return null;}Overridepublic Color getColor(String color) {if (color null) {return null;}if (color.equalsIgnoreCase(RED)) {return new Red();} else if (color.equalsIgnoreCase(GREEN)) {return new Green();} else if (color.equalsIgnoreCase(BLUE)) {return new Blue();}return null;} }ShapeFacotry package com.vinjcent.prototype.abstractFactory;/*** author vinjcent* description 形状工厂*/ public class ShapeFactory extends AbstractFactory {Overridepublic Shape getShape(String shapeType) {if (shapeType null) {return null;}// (优化:这里可以通过反射来获取)if (shapeType.equalsIgnoreCase(CIRCLE)) {return new Circle();} else if (shapeType.equalsIgnoreCase(RECTANGLE)) {return new Rectangle();} else if (shapeType.equalsIgnoreCase(SQUARE)) {return new Square();}return null;}Overridepublic Color getColor(String color) {return null;} }3.4 工厂生产者 FactoryProducer package com.vinjcent.prototype.abstractFactory;/*** author vinjcent* description 工厂生产者*/ public class FactoryProducer {/*** 根据选择获取对应的生产工厂** param choice 选择类型* return 具体的工厂*/public static AbstractFactory getFactory(String choice) {if (choice.equalsIgnoreCase(SHAPE)) {return new ShapeFactory();} else if (choice.equalsIgnoreCase(COLOR)) {return new ColorFactory();}return null;} }3.5 测试主函数 package com.vinjcent.prototype.abstractFactory;/*** author vinjcent*/ public class Main {public static void main(String[] args) {// 1.获取形状工厂AbstractFactory shapeFactory FactoryProducer.getFactory(SHAPE);// 2.获取形状为 Circle 的对象Shape circle shapeFactory.getShape(CIRCLE);// 2.1 调用 Circle 的 draw 方法circle.draw();// 3.获取形状为 Rectangle 的对象Shape rectangle shapeFactory.getShape(RECTANGLE);// 3.1 调用 Rectangle 的 draw 方法rectangle.draw();// 4.获取形状为 Square 的对象Shape square shapeFactory.getShape(SQUARE);// 4.1 调用 Square 的 draw 方法square.draw();// 5.获取颜色工厂AbstractFactory colorFactory FactoryProducer.getFactory(COLOR);// 6.获取颜色为 Red 的对象Color red colorFactory.getColor(RED);// 6.1 调用 Red 的 fill 方法red.fill();// 7.获取颜色为 Green 的对象Color green colorFactory.getColor(GREEN);// 7.1调用 Green 的 fill 方法green.fill();// 8.获取颜色为 Blue 的对象Color blue colorFactory.getColor(BLUE);// 8.1调用 Blue 的 fill 方法blue.fill();} } 测试结果 4. 使用场景 QQ 换皮肤一整套一起换生成不同操作系统的程序 注意事项 产品族难扩展产品等级易扩展
http://www.tj-hxxt.cn/news/220353.html

相关文章:

  • 网站编辑注意问题金坛市住房和城乡建设局网站
  • 网站 粘度wordpress 在线教育主题
  • 百度收录网站定位地址十大外贸论坛
  • 建设通官方网站下载e航seo的排名机制
  • 做二手车有哪些网站有哪些手续网站开发湛江
  • 可以看帖子的网站毕业答辩ppt模板免费下载 素材
  • 网站排名优化要多少钱网站不备案备案
  • 网站怎么做会让神马搜索到旺店通app手机企业版下载
  • 兴义网站seo开一个网站需要什么
  • 网站标题logo怎么做樱花代码html
  • 周杰伦做的广告网站网站建设除了中企动力
  • 做网站后台教程视频中国建设工程监理协会网站
  • 网站开发工具.晴天娃娃wordpress采集微信公众号
  • 做免费网站建设银行银行官网网站
  • 网站后台怎么做企业文化培训
  • 基于php的网站建设思路方案图文制作app
  • 重庆网站的制作价格网站怎么后台登陆
  • 买东西的网站深圳公司注册地址
  • 青岛谁优化网站做的好如何看网站的浏览量
  • 站长检测同ip网站很多怎么办android安卓软件下载
  • 做网站维护的人叫啥做网站需要字体授权
  • 中学网站域名用什么用软文推广多少钱一篇
  • 网站改版的意义公司网站如何做宣传
  • 动漫网站建站目的湖南网站建设欧黎明
  • 网站注册建设如何建设网站山东济南兴田德润官网
  • 网站建设试题网络销售怎么做自己的网站
  • 邢台网站开发有没专门做二手的家具网站
  • 建站网站设计建设银行理财网站
  • 有什么可以做cad赚钱的网站网站 做英文 翻译 规则
  • 深圳建设品牌网站wordpress底部版权代码