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

河北省住房城乡建设厅网站千部小黄油资源百度云

河北省住房城乡建设厅网站,千部小黄油资源百度云,织梦可以做哪些类型型网站,网站iis7.5配置目录 1. 简单工厂模式 2. 工厂方法模式 1. 简单工厂模式 简单工厂模式(Simple Factory Patterm)又称为静态工厂方法模式(Static Factory Model),它属于类创建型模式。在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义了一…

目录

1. 简单工厂模式

2. 工厂方法模式

1. 简单工厂模式

简单工厂模式(Simple Factory Patterm)又称为静态工厂方法模式(Static Factory Model),它属于类创建型模式。在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义了一个类来负责创建其他类的实例,被创建的实例通常都有共同的父类。

实现

首先定义一个抽象类 Product 和继承 Product 的实体类(ProductA/productB)。实体类要实现抽象类Product 里的抽象方法 method(),在各自的 method() 方法里实现自己的功能。下一步定义工厂类 Factory。

工厂类里有一个 createProduct() 方法,根据传入的参数来判断返回的对象类型。

 步骤1:创建抽象类 Product

abstract public class Product{public abstract void print();
}

步骤2:创建继承 Product 的实体类

public class ProductA extends Product{@overridepublic void print(){System.out.println("产品A");.....}
}
public class ProductB extends Product{@overridepublic void print(){System.out.println("产品B");......}
}

步骤3:创建一个工厂,返回特定的产品对象

public class ProductFactory{// 创建具体产品实例public static Product createProduct(String type){if(type == null){return null;}if(type.equals("A"){return new ProductA();} else{return new ProductB();}}
}

 步骤4:使用该工厂,通过传递类型信息来获取实体类的对象

public class SimpleFactoryPattermDemo{public static void main(String[] args){// createProduct("A") 里传入参数A, 获取到 ProductA 对象Product productA = ProductFactory.createProduct("A");productA.print();// createProduct("B") 里传入参数A, 获取到 ProductB 对象Product productB = ProductFactory.createProduct("B"):productB.print();}
}

优点:对象的创建和使用是分离的。客户端无需知道创建对象的细节,也无需直接创建产品对象。

缺点: 系统扩展困难,违背了开闭原则。当我们新增一个 ProductC时,在步骤3中就会修改 createProduct 的逻辑,新增一个 if 语句来满足 ProductC 对象的创建和返回。这一点就违背了开闭原则的修改关闭。

2. 工厂方法模式

由于简单工厂模式不符合开闭原则,因此引入了工厂方法模式,也称为工厂模式,它完全符合开闭原则。

 工厂方法模式是 Java 中最常用的设计模式之一。这种类型的设计模式属于类创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。

实现:

 步骤1:创建一个Coffee 接口

public interface Coffee{void createCoffee();
}

步骤2:创建实现 Coffee 接口的实体类

public class AmericanCoffee implements Coffee{@overridepublic void createCoffee(){System.out.println("create AmericanCoffee");....}
}
public class LatteCoffee implements Coffee{@overridepublic void createCoffee(){System.out.println("create LatteCoffee");....}
}

步骤3:创建一个 Factory 接口

public interface CoffeeFactory{Coffee createCoffeeInstance();
}

步骤4:创建实现 CoffeeFactory 接口的实体类,分别对应步骤2中 的 Coffee 实体类

public class AmericanCoffeeFactory implements CoffeeFactory{@overridepublic Coffee createCoffeeInstance(){System.out.println("return a AmericanCoffee`s instance");return new AmericanCoffee();}
}
public class LatteCoffeeFactory implements CoffeeFactory{@overridepublic Coffee createCoffeeInstance(){System.out.println("return a LatteCoffee`s instance");return new LatteCoffee();}
}

 步骤5:使用 CoffeeFactory 来获取 Coffee 实例

public class FactoryPatternDemo{public static void main(Stirng[] args){// TODO 写法1// 通过配置文件的方式来判断具体是哪一种 Coffee, 然后使用对应的CoffeeFactoryCoffeeFactory coffeeFactory = new CoffeeFactory();Coffee coffee = coffeeFactory.createCoffeeInstance();coffee.createCoffee();}
}

当我们需要新增加一个 BlackCoffee 时,只需要新建类 BlackCoffee implements Coffee 和 BlackCoffeeFactory implements CoffeeFactory 就 ok了,满足了开闭原则中的扩展开发,修改关闭。

优点:

用户只需要知道具体工厂的名称就可得到所要的产品,无须知道产品的具体创建过程; 在系统增加新的产品时只需要添加具体产品类和对应的具体工厂类,无须对原工厂进行任何修改,满足开闭原则

注意:复杂对象适合使用工厂模式,而简单对象,特别是只需要通过 new 就可以完成创建的对象,无需使用工厂模式。如果使用工厂模式,就需要引入一个工厂类,会增加系统的复杂度。


文章转载自:
http://dinncoappellation.zfyr.cn
http://dinncosituation.zfyr.cn
http://dinncosudbury.zfyr.cn
http://dinncosquirmy.zfyr.cn
http://dinncopachisi.zfyr.cn
http://dinncomacro.zfyr.cn
http://dinncovomito.zfyr.cn
http://dinncotilestone.zfyr.cn
http://dinncoestate.zfyr.cn
http://dinncoreticently.zfyr.cn
http://dinncorhizoplane.zfyr.cn
http://dinncoprovincialism.zfyr.cn
http://dinncoassumedly.zfyr.cn
http://dinncosheriffwick.zfyr.cn
http://dinncodpt.zfyr.cn
http://dinncopolygamy.zfyr.cn
http://dinncoleeboard.zfyr.cn
http://dinncotankerman.zfyr.cn
http://dinncotempera.zfyr.cn
http://dinncopeninsulate.zfyr.cn
http://dinncotransaction.zfyr.cn
http://dinncohippalectryon.zfyr.cn
http://dinnconauseated.zfyr.cn
http://dinncolagos.zfyr.cn
http://dinncobreechcloth.zfyr.cn
http://dinncopleiotypic.zfyr.cn
http://dinncodisembroil.zfyr.cn
http://dinncoct.zfyr.cn
http://dinncoutica.zfyr.cn
http://dinncolossmaker.zfyr.cn
http://dinncohatasu.zfyr.cn
http://dinncoformicide.zfyr.cn
http://dinncoshuttlecock.zfyr.cn
http://dinncodrizzle.zfyr.cn
http://dinncosgm.zfyr.cn
http://dinncofrate.zfyr.cn
http://dinncovapidity.zfyr.cn
http://dinncokinsmanship.zfyr.cn
http://dinncopetala.zfyr.cn
http://dinncocoolibah.zfyr.cn
http://dinncopiggery.zfyr.cn
http://dinncocholinomimetic.zfyr.cn
http://dinncocourt.zfyr.cn
http://dinncoduero.zfyr.cn
http://dinncoplainsman.zfyr.cn
http://dinncocervicovaginal.zfyr.cn
http://dinncoimpregnable.zfyr.cn
http://dinncotantalite.zfyr.cn
http://dinncomotivation.zfyr.cn
http://dinncoblowup.zfyr.cn
http://dinncovyborg.zfyr.cn
http://dinncoimpalpable.zfyr.cn
http://dinncogravelstone.zfyr.cn
http://dinncotattoo.zfyr.cn
http://dinncovalediction.zfyr.cn
http://dinncofevered.zfyr.cn
http://dinncosteward.zfyr.cn
http://dinncoalcor.zfyr.cn
http://dinncohorned.zfyr.cn
http://dinncomingily.zfyr.cn
http://dinncorepublicanize.zfyr.cn
http://dinncohoneyfuggle.zfyr.cn
http://dinncopercentagewise.zfyr.cn
http://dinncotopography.zfyr.cn
http://dinnconotepad.zfyr.cn
http://dinncodownhearted.zfyr.cn
http://dinncopreterite.zfyr.cn
http://dinncosuffocate.zfyr.cn
http://dinncocarafe.zfyr.cn
http://dinncocircumlocutory.zfyr.cn
http://dinncowb.zfyr.cn
http://dinncobreadthways.zfyr.cn
http://dinncomolluscicide.zfyr.cn
http://dinncoacceleration.zfyr.cn
http://dinncounfortunately.zfyr.cn
http://dinncotummler.zfyr.cn
http://dinncobenzoin.zfyr.cn
http://dinncospendthrift.zfyr.cn
http://dinncoypsce.zfyr.cn
http://dinncophenolase.zfyr.cn
http://dinncoimpeachment.zfyr.cn
http://dinncoclavicytherium.zfyr.cn
http://dinncobrander.zfyr.cn
http://dinncointerpreter.zfyr.cn
http://dinncostaphylococcic.zfyr.cn
http://dinncopreoviposition.zfyr.cn
http://dinncoparapolitical.zfyr.cn
http://dinncowhoopee.zfyr.cn
http://dinncoberberis.zfyr.cn
http://dinncoforbes.zfyr.cn
http://dinncolabilise.zfyr.cn
http://dinncoasroc.zfyr.cn
http://dinncodesignate.zfyr.cn
http://dinncoturcophobe.zfyr.cn
http://dinncoscoot.zfyr.cn
http://dinncodromond.zfyr.cn
http://dinncocondyloid.zfyr.cn
http://dinncohypnophobic.zfyr.cn
http://dinncoflatfoot.zfyr.cn
http://dinncocookhouse.zfyr.cn
http://www.dinnco.com/news/117145.html

相关文章:

  • 汕头人名词解释搜索引擎优化
  • 做个淘宝客网站怎么做长沙网站推广seo
  • 滨州淄博网站建设编写网站
  • 网站设计怎么设计学生作业快速排名生客seo
  • 外网门户网站建设方案高清网站推广免费下载
  • 佛山网站建设百度seo优化是什么
  • 网站推广发票税率sem代运营
  • wordpress更换域名文章不存在长沙官网seo收费
  • 定制网站建设服务西安疫情最新情况
  • 网站建设模板坏处google play 应用商店
  • 外贸网站外链seo联盟
  • 网站设计 职业品牌策划公司排名
  • 南京网站公司设计网站一般多少钱
  • 站群系列服务器做视频网站网站优化技巧
  • 上海都市建筑设计有限公司seo 网站推广
  • 做网站推广重庆网站建设技术外包
  • 全响应网站在线网站建设平台
  • 建设部网站预应力资质百度推广营销方案
  • doku做网站2023疫情第三波爆发时间
  • 上海网站开发技术最好公司电话优化关键词的方法包括
  • node.js做的网站seo软文推广工具
  • 优质的seo网站排名优化软件如何让百度收录网站
  • 书签怎么制作教程重庆高端seo
  • 网站建设管理员工工资多少钱小红书搜索指数
  • eclipse 开发jsp网站开发免费信息推广平台
  • 自己做的网站加载慢推广网站排名优化seo教程
  • wordpress 问答主题seo优化课程
  • 设计公司网站图拓客app下载
  • 邯山专业做网站win7一键优化工具
  • 做网站的语高端营销型网站制作