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

做网站遇到的困难总结黑群晖的做网站文件

做网站遇到的困难总结,黑群晖的做网站文件,php网站开发待遇,wordpress设置 文件前言 这2个月来#xff0c;重新出发#xff0c;从java开发需要的数据库、查询日志工具、开发工具等的安装、环境配置#xff0c;再到后面的基础学习、数据库学习、扩展学习#xff08;maven、mq、设计模式、spring 系列等等#xff09;#xff0c;边学边记录#xff0c…前言 这2个月来重新出发从java开发需要的数据库、查询日志工具、开发工具等的安装、环境配置再到后面的基础学习、数据库学习、扩展学习maven、mq、设计模式、spring 系列等等边学边记录基本上都已经完成此篇是找工作之前的最后一篇了主要以https://www.runoob.com/design-pattern/factory-pattern.html内容为主。 感谢各位的分享以及努力的自己改变永远不嫌晚。无论你是几岁也无论你目前所处的境况有多糟只要立定目标、一步一步往前走人生随时都有翻盘的可能性祝各位一帆风顺前途坦荡愿自己能找到心仪的工作不负未来。 1、工厂模式 工厂模式Factory Pattern是 Java 中最常用的设计模式之一它提供了一种创建对象的方式使得创建对象的过程与使用对象的过程分离。 工厂模式提供了一种创建对象的方式而无需指定要创建的具体类。 通过使用工厂模式可以将对象的创建逻辑封装在一个工厂类中而不是在客户端代码中直接实例化对象这样可以提高代码的可维护性和可扩展性。 1.1、工厂模式的类型 简单工厂模式Simple Factory Pattern 简单工厂模式不是一个正式的设计模式但它是工厂模式的基础。它使用一个单独的工厂类来创建不同的对象根据传入的参数决定创建哪种类型的对象。 工厂方法模式Factory Method Pattern 工厂方法模式定义了一个创建对象的接口但由子类决定实例化哪个类。工厂方法将对象的创建延迟到子类。 抽象工厂模式Abstract Factory Pattern 抽象工厂模式提供一个创建一系列相关或互相依赖对象的接口而无需指定它们具体的类。 1.2、应用实例 汽车制造你需要一辆汽车只需从工厂提货而不需要关心汽车的制造过程及其内部实现。Hibernate更换数据库时只需更改方言Dialect和数据库驱动Driver即可实现对不同数据库的切换。 1.3、优点 调用者只需要知道对象的名称即可创建对象。 扩展性高如果需要增加新产品只需扩展一个工厂类即可。 屏蔽了产品的具体实现调用者只关心产品的接口。 1.4、缺点 每次增加一个产品时都需要增加一个具体类和对应的工厂使系统中类的数量成倍增加增加了系统的复杂度和具体类的依赖。 1.5、使用场景 日志记录日志可能记录到本地硬盘、系统事件、远程服务器等用户可以选择记录日志的位置。数据库访问当用户不知道最终系统使用哪种数据库或者数据库可能变化时。连接服务器的框架设计需要支持 “POP3”、“IMAP”、“HTTP” 三种协议可以将这三种协议作为产品类共同实现一个接口。 1.6、结构 工厂模式包含以下几个主要角色 抽象产品Abstract Product定义了产品的共同接口或抽象类。它可以是具体产品类的父类或接口规定了产品对象的共同方法。具体产品Concrete Product实现了抽象产品接口定义了具体产品的特定行为和属性。抽象工厂Abstract Factory声明了创建产品的抽象方法可以是接口或抽象类。它可以有多个方法用于创建不同类型的产品。具体工厂Concrete Factory实现了抽象工厂接口负责实际创建具体产品的对象。 1.7、实现 我们将创建一个 Shape 接口和实现 Shape 接口的实体类。下一步是定义工厂类 ShapeFactory。 FactoryPatternDemo 类使用 ShapeFactory 来获取 Shape 对象。它将向 ShapeFactory 传递信息CIRCLE / RECTANGLE / SQUARE以便获取它所需对象的类型。 步骤 1 创建一个接口: Shape.javapublic interface Shape {void draw(); }步骤 2 创建实现接口的实体类。 Rectangle.javapublic class Rectangle implements Shape {Overridepublic void draw() {System.out.println(Inside Rectangle::draw() method.);} }Square.javapublic class Square implements Shape {Overridepublic void draw() {System.out.println(Inside Square::draw() method.);} }Circle.javapublic class Circle implements Shape {Overridepublic void draw() {System.out.println(Inside Circle::draw() method.);} }步骤 3 创建一个工厂生成基于给定信息的实体类的对象。 ShapeFactory.javapublic class ShapeFactory {//使用 getShape 方法获取形状类型的对象public 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;} }步骤 4 使用该工厂通过传递类型信息来获取实体类的对象。 FactoryPatternDemo.javapublic class FactoryPatternDemo {public static void main(String[] args) {ShapeFactory shapeFactory new ShapeFactory();//获取 Circle 的对象并调用它的 draw 方法Shape shape1 shapeFactory.getShape(CIRCLE);//调用 Circle 的 draw 方法shape1.draw();//获取 Rectangle 的对象并调用它的 draw 方法Shape shape2 shapeFactory.getShape(RECTANGLE);//调用 Rectangle 的 draw 方法shape2.draw();//获取 Square 的对象并调用它的 draw 方法Shape shape3 shapeFactory.getShape(SQUARE);//调用 Square 的 draw 方法shape3.draw();} }步骤 5 执行程序输出结果 Inside Circle::draw() method. Inside Rectangle::draw() method. Inside Square::draw() method.总结简单描述为我有圆形、正方形、三角形可是我想绘制一个梯形在工厂模式让我我不需要知道是怎么绘制的我只关心我调用工厂能拿到绘制好的梯形因为工厂模式的缺点每次增加一个产品时都需要增加一个具体类和对应的工厂。 所以我只需要跟工厂说我想要绘制好的梯形这个时候工厂会创建一个梯形的具体类用来实现绘制接口用Draw独立绘制梯形客户对接的是工厂而不是绘制接口因此客户只需要告诉工厂代码比如上述的shapeFactory.getShape(“CIRCLE”);中的CIRCLE就能拿到绘制好的梯形了。 2、抽象工厂模式 在抽象工厂模式中接口是负责创建一个相关对象的工厂不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。 抽象工厂模式提供了一种创建一系列相关或相互依赖对象的接口而无需指定具体实现类。通过使用抽象工厂模式可以将客户端与具体产品的创建过程解耦使得客户端可以通过工厂接口来创建一族产品。 2.1、结构 抽象工厂模式包含以下几个主要角色 抽象工厂Abstract Factory声明了一组用于创建产品对象的方法每个方法对应一种产品类型。抽象工厂可以是接口或抽象类。具体工厂Concrete Factory实现了抽象工厂接口负责创建具体产品对象的实例。抽象产品Abstract Product定义了一组产品对象的共同接口或抽象类描述了产品对象的公共方法。具体产品Concrete Product实现了抽象产品接口定义了具体产品的特定行为和属性。 抽象工厂模式通常涉及一族相关的产品每个具体工厂类负责创建该族中的具体产品。客户端通过使用抽象工厂接口来创建产品对象而不需要直接使用具体产品的实现类。 2.2、实现 我们将创建 Shape 和 Color 接口和实现这些接口的实体类。下一步是创建抽象工厂类 AbstractFactory。接着定义工厂类 ShapeFactory 和 ColorFactory这两个工厂类都是扩展了 AbstractFactory。然后创建一个工厂创造器/生成器类 FactoryProducer。 AbstractFactoryPatternDemo 类使用 FactoryProducer 来获取 AbstractFactory 对象。它将向 AbstractFactory 传递形状信息 ShapeCIRCLE / RECTANGLE / SQUARE以便获取它所需对象的类型。同时它还向 AbstractFactory 传递颜色信息 ColorRED / GREEN / BLUE以便获取它所需对象的类型。 步骤 1 为形状创建一个接口。 Shape.java public interface Shape {void draw(); }步骤 2 创建实现接口的实体类。 Rectangle.javaRectangle.java public class Rectangle implements Shape {Overridepublic void draw() {System.out.println(Inside Rectangle::draw() method.);} }Square.java public class Square implements Shape {Overridepublic void draw() {System.out.println(Inside Square::draw() method.);} }Circle.java public class Circle implements Shape {Overridepublic void draw() {System.out.println(Inside Circle::draw() method.);} }步骤 3 为颜色创建一个接口。 Color.java public interface Color {void fill(); }步骤4 创建实现接口的实体类。 Red.java public class Red implements Color {Overridepublic void fill() {System.out.println(Inside Red::fill() method.);} }Green.java public class Green implements Color {Overridepublic void fill() {System.out.println(Inside Green::fill() method.);} }Blue.java public class Blue implements Color {Overridepublic void fill() {System.out.println(Inside Blue::fill() method.);} }步骤 5 为 Color 和 Shape 对象创建抽象类来获取工厂。 AbstractFactory.java public abstract class AbstractFactory {public abstract Color getColor(String color);public abstract Shape getShape(String shape); }步骤 6 创建扩展了 AbstractFactory 的工厂类基于给定的信息生成实体类的对象。 ShapeFactory.java 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;} }ColorFactory.java 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;} }步骤 7 创建一个工厂创造器/生成器类通过传递形状或颜色信息来获取工厂。 FactoryProducer.java public class FactoryProducer {public static AbstractFactory getFactory(String choice){if(choice.equalsIgnoreCase(SHAPE)){return new ShapeFactory();} else if(choice.equalsIgnoreCase(COLOR)){return new ColorFactory();}return null;}} 步骤 8 使用 FactoryProducer 来获取 AbstractFactory通过传递类型信息来获取实体类的对象。 AbstractFactoryPatternDemo.java public class AbstractFactoryPatternDemo {public static void main(String[] args) {//获取形状工厂AbstractFactory shapeFactory FactoryProducer.getFactory(SHAPE);//获取形状为 Circle 的对象Shape shape1 shapeFactory.getShape(CIRCLE);//调用 Circle 的 draw 方法shape1.draw();//获取形状为 Rectangle 的对象Shape shape2 shapeFactory.getShape(RECTANGLE);//调用 Rectangle 的 draw 方法shape2.draw();//获取形状为 Square 的对象Shape shape3 shapeFactory.getShape(SQUARE);//调用 Square 的 draw 方法shape3.draw();//获取颜色工厂AbstractFactory colorFactory FactoryProducer.getFactory(COLOR);//获取颜色为 Red 的对象Color color1 colorFactory.getColor(RED);//调用 Red 的 fill 方法color1.fill();//获取颜色为 Green 的对象Color color2 colorFactory.getColor(GREEN);//调用 Green 的 fill 方法color2.fill();//获取颜色为 Blue 的对象Color color3 colorFactory.getColor(BLUE);//调用 Blue 的 fill 方法color3.fill();} }步骤 9 执行程序输出结果 Inside Circle::draw() method. Inside Rectangle::draw() method. Inside Square::draw() method. Inside Red::fill() method. Inside Green::fill() method. Inside Blue::fill() method.
http://www.hkea.cn/news/14532788/

相关文章:

  • 网站建设培训 南宁上海公共招聘网app下载
  • wordpress查看自己网站的ip量网站开发前后端分离要多少钱
  • 网站关键字工具网址seo查询
  • 织梦网站源码转换成wordpress东莞疾控中心最新通知
  • 个人博客网页设计网站优化的优势
  • 摄影网站的设计厦门百度关键词seo收费
  • 驻马店住房和城乡建设局网站网页基础设计
  • 西部数码网站模板推广服务公司
  • 游戏公司招聘网站wordpress+商场源码
  • 网站域名批量查询wordpress上传图片改名
  • 广州网站建设网站线上营销的优势
  • 360免费建站永久免费传媒公司名字大气一些
  • 个人网站背景图片网站突然搜不到了
  • 视频解析网站如何做搜索广州广告制作公司
  • 英文企业网站带后台有数据库十八未成年禁用免费app
  • html5 经典网站做的丑的网站有哪些知乎
  • 室内设计相关网站微商城怎么开通需要多少钱
  • 网站免费推广方式大网站都开放自己的cms系统
  • 网站换服务器 备案吗济源网站建设
  • 网站开发 项目的人员分配单仁资讯做网站怎样
  • 平面设计网站制作网络制作公司专业制作网站
  • 拍拍网的网站建设浙江省城乡建设厅
  • 济南网站建设云华互动郴州新网手机版
  • 湖北企业商城网站建设长春哪家公司做网站好
  • 贵阳有哪些做网站的公司wordpress is admin
  • 寺庙建设网站的意义做电影网站 资源怎么存放
  • 网站后台编辑器编辑内容无法显示脑子笨适合学计算机吗
  • 花生壳免费域名注册网站电脑版百度网盘
  • 建设银行网站北京大湖建设工程有限公司网站
  • 企业网站关键词优化排名应该怎么做火山视窗软件开发平台