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

vps 用ip可以访问网站么哪个网站财经做的最好

vps 用ip可以访问网站么,哪个网站财经做的最好,做导购网站,苏州网站推广如何抽象工厂模式提供一个创建一组相关或相互依赖的对象的接口#xff0c;而无须指定它们具体的类#xff0c;每个子类可以生产一系列相关的产品。 The Abstract Factory Pattern is to provide an interface for creating families of related or dependent objects without s…抽象工厂模式提供一个创建一组相关或相互依赖的对象的接口而无须指定它们具体的类每个子类可以生产一系列相关的产品。 The Abstract Factory Pattern is to provide an interface for creating families of related or dependent objects without specifying their concrete classes.结构设计 抽象工厂模式包含如下角色 AbstractFactory抽象工厂负责声明一组产品创建的工厂方法每个方法返回一个AbstractProduct类型的对象。 ConcreteFactory具体工厂用来实现AbstractFactory声明的工厂方法以创建具有特定实现的产品对象。 AbstractProduct抽象产品用来声明一组不同但相关的产品声明的接口。 ConcreteProduct具体产品用来实现AbstractProduct的接口以定义特定的产品。 抽象工厂模式类图表示如下 伪代码实现 接下来将使用代码介绍下抽象工厂模式的实现。 (1) 定义一组产品(ProductA、ProductB、…)抽象类(也可以是基类)对产品接口进行声明。然后定义具体产品(Concrete Products)实现产品声明的接口。 public abstract class ProductA {abstract void function(); } public class ConcreteProductA1 extends ProductA {Overridepublic void function() {System.out.println(---------do some thing in a ConcreteProductA1 instance---------);} } public class ConcreteProductA2 extends ProductA {Overridepublic void function() {System.out.println(---------do some thing in a ConcreteProductA2 instance---------);} }public abstract class ProductB {abstract void foo(); } public class ConcreteProductB1 extends ProductB {Overridepublic void foo() {System.out.println(---------do some thing in a ConcreteProductB1 instance---------);} } public class ConcreteProductB2 extends ProductB {Overridepublic void foo() {System.out.println(---------do some thing in a ConcreteProductB2 instance---------);} }(2) 定义产品工厂(Product Factory)抽象类或基类声明返回一组产品对象的工厂方法。每个方法的返回对象类型必须与产品接口相匹配。然后定义具体产品工厂(Concrete Product Factories)重写基础工厂方法 使其返回不同类型的产品。 public abstract class ProductFactory {/*** 生产产品A*/abstract ProductA createProductA();/*** 生产产品B*/abstract ProductB createProductB(); }public class ProductFactory1 extends ProductFactory {Overridepublic ProductA createProductA() {System.out.println(create ProductA);return new ConcreteProductA1();}Overridepublic ProductB createProductB() {System.out.println(create ProductB);return new ConcreteProductB1();} }public class ProductFactory2 extends ProductFactory {Overridepublic ProductA createProductA() {System.out.println(create ProductB);return new ConcreteProductA2();}Overridepublic ProductB createProductB() {System.out.println(create ProductB);return new ConcreteProductB2();} }(3) 客户端调用。支持多种调用方式如直接在方法中实例化工厂子类、提供静态方法支持方法参数中传递工厂对象、提供对象方法使用构造函数中传入的工厂对象。 public class AbstractFactoryClient {private ProductFactory factory;public AbstractFactoryClient(ProductFactory factory) {this.factory factory;}// 调用方式一方法中实例化工厂子类public void test() {// (1) 实例化产品工厂ProductFactory productFactory1 new ProductFactory1();// (2) 生产产品ProductA productA1 productFactory1.createProductA();// (3) 使用产品productA1.function();// 下同ProductB productB1 productFactory1.createProductB();productB1.foo();ProductFactory productFactory2 new ProductFactory2();ProductA productA2 productFactory2.createProductA();productA2.function();ProductB productB2 productFactory2.createProductB();productB2.foo();}// 调用方式二工厂对象作为方法参数(工具类方法)public static void foo(ProductFactory factory) {ProductA productA1 factory.createProductA();productA1.function();ProductB productB1 factory.createProductB();productB1.foo();}// 调用方式三使用构造函数中传入的工厂(工厂一旦绑定无法修改)public void foo() {ProductA productA1 this.factory.createProductA();productA1.function();ProductB productB1 this.factory.createProductB();productB1.foo();} }适用场景 在以下情况下可以考虑使用抽象工厂模式 (1) 如果需要与多个不同系列的相关产品交互但无法预知对象确切类别及其依赖关系时可使用抽象工厂。 抽象工厂将创建产品的代码与实际使用产品的代码分离从而能在不影响其他代码的情况下扩展产品创建部分代码。 (2) 如果希望用户能扩展软件库或框架的内部组件可使用抽象工厂。 继承是扩展软件库或框架默认行为的最简单方法。但是当使用子类替代标准组件时框架如何辨识出该子类解决方案是将各框架中构造组件的代码集中到单个工厂方法中并在继承该组件之外允许任何人对该方法进行重写。 (3) 如果存在一个基于一组抽象方法的类且其主要功能因此变得不明确可使用抽象工厂。 在设计良好的程序中 每个类仅负责一件事。如果一个类与多种类型产品交互就可以考虑将工厂方法抽取到独立的工厂类或具备完整功能的抽象工厂类中。 优缺点 抽象工厂模式有以下优点 (1) 将创建产品的代码与实际使用产品的代码分离(解耦)避免产品创建工厂和实际产品之间的紧耦合。 (2) 单一职责原则。产品创建代码放在单独的类里从而使得代码更容易维护。 (3开闭原则。无需更改客户端调用代码 就可以在程序中引入新的产品类型。 但是抽象工厂模式也存在以下缺点 (1) 应用抽象工厂模式需要引入许多新的子类代码会因此变得更复杂。最好的情况是将该模式引入产品类的现有层次结构中(将工厂类组合到产品类里)。 (2) 由于考虑到系统的可扩展性需要引入抽象层在客户端代码中均使用抽象层进行定义增加了系统的抽象性和理解难度且在实现时可能需要用到反射等技术增加了系统的实现难度。 参考 https://www.edrawsoft.cn/ 亿图图示 《设计模式可复用面向对象软件的基础》 Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides 著 李英军, 马晓星 等译 https://design-patterns.readthedocs.io/zh_CN/latest/creational_patterns/abstract_factory.html 抽象工厂模式 https://refactoringguru.cn/design-patterns/abstract-factory 抽象工厂模式 https://blog.csdn.net/ShuSheng0007/article/details/86644481 秒懂设计模式之抽象工厂模式 https://www.cnblogs.com/adamjwh/p/9033552.html 简说设计模式——抽象工厂模式
http://www.w-s-a.com/news/142934/

相关文章:

  • 制作一个网站流程企业建设网站的母的
  • 九州建网站网页游戏平台代理
  • 培训课程网站网上下载的网站模板怎么用
  • 重庆山艺网站建设塘厦理工学校
  • 做网站的人叫什么软件玩具网站设计
  • 网站说服力营销型网站策划 pdf深圳有什么公司名称
  • 做物流的可以在那些网站找客户男生晚上正能量你懂我意思
  • 宁德市城乡住房建设厅网站教育机构logo
  • 做定制网站价格有网站了怎么做app
  • 做网站和制作网页的区别北京朝阳区最好的小区
  • 网站策划 ppt北京装修公司排名推荐
  • 郑州网站建设公司哪家专业好如何注册一家公司
  • 证券投资网站做哪些内容滨州论坛网站建设
  • 重庆网站建设公司模板广东佛山
  • 中展建设股份有限公司网站做网站备案是什么意思
  • 石家庄网站建设接单wordpress功能小工具
  • 有没有专门做网站的网站镜像上传到域名空间
  • 网站建设中 windows买域名自己做网站
  • 设计英语宁波seo做排名
  • 奉贤网站建设上海站霸深圳几个区
  • c#做网站自已建网站
  • 成都地区网站建设网站设计类型
  • 如何做网站结构优化北京响应式网站
  • 出售源码的网站威海住房建设局网站
  • 网站建设补充报价单网站建设 技术指标
  • 做网站费用分摊入什么科目做网络网站需要三证么
  • 房屋备案查询系统官网杭州排名优化软件
  • 网站地图html网络营销的流程和方法
  • 注册好网站以后怎么做wordpress 获取插件目录下
  • 南京做网站dmooo地方网站需要什么手续