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

ps软件下载官方网站如何优化企业网站

ps软件下载官方网站,如何优化企业网站,网址推荐你会感谢我的,口碑营销策略和技巧在java中#xff0c;万物皆对象#xff0c;这些对象都需要创建#xff0c;如果创建的时候直接new该对象#xff0c;就会对该对象耦合严重#xff0c;假如我们要更换对象#xff0c;所有new对象的地方都需要修改一遍#xff0c;这显然违背了软件设计的开闭原则。如果我们…在java中万物皆对象这些对象都需要创建如果创建的时候直接new该对象就会对该对象耦合严重假如我们要更换对象所有new对象的地方都需要修改一遍这显然违背了软件设计的开闭原则。如果我们使用工厂来生产对象我们就只和工厂打交道就可以了彻底和对象解耦如果要更换对象直接在工厂里更换该对象即可达到了与对象解耦的目目的所以说工厂模式最大的优点就是解耦。 简单工厂不属于GOF23种设计模式之一 不是一种设计模式更像是一种编码习惯 要学习工厂方法必须先了解什么是简单工厂 结构 抽象产品定义了产品的规范描述了产品的主要特性和功能。具体产品实现或者继承抽象产品的子类即产品本身。具体工厂提供了创建产品的方法调用者通过该方法来进行产品的创建 优点 封装了创建对象的过程可以通过参数直接获取对象。把对象的创建和业务逻辑层分开这样以后就避免了修改客户代码如果要实产品直接修改工厂类而不需要在原代码中修改这样就降低了客户代码修改的可能性更加容易扩展。 缺点 增加新产品时还是需要修改工厂类的代码违背了“开闭原则 // 定义一个接口或抽象类 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 type) {if (circle.equalsIgnoreCase(type)) {return new Circle();} else if (rectangle.equalsIgnoreCase(type)) {return new Rectangle();} else {throw new IllegalArgumentException(Invalid shape type: type);}} }// 客户端代码 public class Client {public static void main(String[] args) {// 使用简单工厂创建不同形状的对象Shape circle ShapeFactory.getShape(circle);circle.draw(); // 输出: Drawing a circle...Shape rectangle ShapeFactory.getShape(rectangle);rectangle.draw(); // 输出: Drawing a rectangle...// 尝试创建无效类型try {Shape invalidShape ShapeFactory.getShape(triangle);} catch (IllegalArgumentException e) {System.out.println(e.getMessage());}} } 在这个例子中ShapeFactory是简单工厂它负责根据传入的字符串类型创建相应的形状对象。客户端代码只需调用工厂方法不需要关心具体的创建过程。 工厂方法 针对上例中的缺点使用工厂方法模式就可以完美的解决完全遵循开闭原则。 定义一个用于创建对象的接口让子类决定实例化哪个产品类对象。工厂方法使一个产品类的实例化延迟到其工厂的子类。 结构 抽象工厂(Abstract Factory):提供了创建产品的接口调用者通过它访问具体工厂的工厂方法来创建产品。具体工厂(Concreteractory):主要是实现抽象工厂中的抽象方法完成具体产品的创建。抽象产品(product):定义了产品的规范描述了产品的主要特性和功能。具体产品(ConcreteProduct实现了抽象产品角色所定义的接口由县体工厂来创建它同县体工厂之间一一对应 将简单工厂模式升级为工厂方法模式我们需要将创建具体产品的逻辑移到每个具体工厂类中而不是集中在一个静态工厂方法中。以下是将简单工厂模式转换为工厂方法模式的Java代码示例 // 定义一个接口或抽象类 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...);} }// 定义抽象工厂类 abstract class ShapeFactory {// 抽象工厂方法由子类实现以创建具体产品public abstract Shape getShape(); }// 定义具体工厂类 class CircleFactory extends ShapeFactory {Overridepublic Shape getShape() {return new Circle();} }class RectangleFactory extends ShapeFactory {Overridepublic Shape getShape() {return new Rectangle();} }// 客户端代码 public class Client {public static void main(String[] args) {// 使用工厂方法模式创建不同形状的对象ShapeFactory circleFactory new CircleFactory();Shape circle circleFactory.getShape();circle.draw(); // 输出: Drawing a circle...ShapeFactory rectangleFactory new RectangleFactory();Shape rectangle rectangleFactory.getShape();rectangle.draw(); // 输出: Drawing a rectangle...// 如果需要添加更多形状只需要创建更多的具体工厂类即可这里不再演示创建三角形的工厂类} } 在这个工厂方法模式的示例中我们创建了一个抽象工厂类ShapeFactory并在其中定义了抽象方法getShape()。然后我们分别为每种形状创建了具体工厂类如CircleFactory和RectangleFactory并在这些类中实现创建相应形状对象的逻辑。客户端代码现在可以根据需求实例化不同的具体工厂类来创建所需形状对象。 优点 用户只需要知道具体工厂的名称就可得到所要的产品无须知道产品的具体创建过程在系统增加新的产品时只需要添加具体产品类和对应的具体工厂类无须对原工厂进行任何修改满足开闭原则 缺点 每增加一个产品就要增加一个具体产品类和一个对应的具体工厂类这增加了系统的复杂度。 典型案例 Collection.iterator ListString list Arrays.asList(a,b,c,d); IteratorString iterator list.iterator(); // ArrayList部分源码 public interface AbstractListE extends AbstractCollectionE implements ListE {// Iteratorspublic IteratorE iterator() {return new Itr();}public ListIteratorE listIterator() {return listIterator(0);}public ListIteratorE listIterator(final int index) {rangeCheckForAdd(index);return new ListItr(index);}private class Itr implements IteratorE{...}private class ListItr extends Itr implements ListIteratorE{...}} // Collection 部分源码 public interface CollectionE extends IterableE {IteratorE iterator(); } // Interator部分源码 public interface IteratorE {boolean hasNext();E next(); }在Collection中定义了Iterator的抽象方法而ArrayList又继承Collection并在类中重写了Interator的方法。 也就是说ArrayList类是在工厂类中创建了Iterator 和ListIterator 的产品。即 Collection接口是抽象工厂类ArrayList是具体的工厂类Iterator接口是抽象商品类ArrayList类中的Iter和ListItr是具体的商品类。 在具体的工厂类中iterator()方法是创建具体的商品类对象。
http://www.w-s-a.com/news/397679/

相关文章:

  • 网站开发语言数据库有几种魏县审批建设的网站
  • 北京公司网站建设推荐海口建设
  • 不懂编程如何做网站婚礼网站模板
  • 像京东一样的网站wordpress入门视频教程7 - 如何在文章里加入视频和音乐
  • 惠州网站建设排名wordpress3万篇文章优化
  • 创建网站的三种方法北京建王园林工程有限公司
  • jsp网站建设模板下载十大免费excel网站
  • 网络公司网站图片网站建立好了自己怎么做优化
  • 云主机是不是可以搭建无数个网站百度快速seo优化
  • 房地产怎么做网站推广建立音乐网站
  • 川畅科技联系 网站设计网站开发的教学视频
  • 为什么学网站开发凡科登陆
  • 设计师常备设计网站大全中山精品网站建设信息
  • 杭州建设工程网seo服务是什么
  • 兼职做问卷调查的网站wordpress mysql设置
  • 怎么在百度上能搜到自己的网站山西seo谷歌关键词优化工具
  • 网站搭建免费模板飞鱼crm下载
  • 网站开发竞品分析app制作公司深圳
  • 网站建设ssc源码修复设计班级网站建设
  • 网站重定向凡科做网站不要钱
  • 佛山html5网站建设微信营销软件破解版
  • 网站单页做301南京百度推广
  • 私人做网站要多少钱展芒设计网页
  • 怎样网站制作设计如何在网上推广农产品
  • 做关键词排名卖网站聚名网
  • 吉林省住房城乡建设厅网站首页体育器材网站建设方案
  • 网站建设及维护专业手机金融界网站
  • 常州网站建设工作室建立网站有怎么用途
  • 如何盗取网站推广策划书模板
  • 游戏网站建设计划书网络开发需要学什么