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

网站开发合同 下载建e设计网

网站开发合同 下载,建e设计网,html网页特效,wordpress 搭建教程 pdf设计模式—创建型模式之工厂模式 工厂模式#xff08;Factory Pattern#xff09;提供了一种创建对象的最佳方式。我们不必关心对象的创建细节#xff0c;只需要根据不同情况获取不同产品即可。 简单工厂模式 比如我们有造车的工厂#xff0c;来生产车#xff0c;我们先…设计模式—创建型模式之工厂模式 工厂模式Factory Pattern提供了一种创建对象的最佳方式。我们不必关心对象的创建细节只需要根据不同情况获取不同产品即可。 简单工厂模式 比如我们有造车的工厂来生产车我们先定义一个抽象车产品 //抽象车产品类 public abstract class AbstractCar { String engine;public abstract void run(); }我们有两个具体的产品货车和家用小汽车都继承自抽象车 //货车 public class Truck extends AbstractCar{public Truck() {this.engine 货车引擎;}Overridepublic void run() {System.out.println(this.engine---正在运行);} } //家用小汽车 public class MiniCar extends AbstractCar{public MiniCar() {this.engine 家用小汽车引擎;}Overridepublic void run() {System.out.println(this.engine ----------》正在运行);} }那我们的工厂可以如此定义 public class MySimpleFactory {/*** 获取车* param type* return*/public AbstractCar newCar(String type){if(truck.equals(type)){return new Truck();}else if(mini.equals(type)){return new MiniCar();}return null;} }一般简单工厂生产的产品优先。 测试类如下 public class SimpleFactoryTest {public static void main(String[] args) {MySimpleFactory factory new MySimpleFactory();AbstractCar truck factory.newCar(truck);AbstractCar mini factory.newCar(mini);truck.run();mini.run();} }运行如下 缺点 **违反了开闭原则扩展不易。**如果有大量的产品会有大量的if else。 工厂方法模式 因为简单工厂模式会出现大量的if else并不能满足打开扩展、关闭修改的原则我们希望如果有扩展直接扩展一个类就好不区改动创造类型的代码这样工厂方法模式就出现了。我们可以把工厂再进行抽象把我们的工厂提升一个层次。 抽象类或者接口就会有多个实现有多实现 就会有多功能。 抽象工厂如下: public abstract class AbstarctCarFactory {public abstract AbstractCar newCar(); }我们的货车、小汽车分别由不同的工厂来创建 //货车工厂 public class TruckFactory extends AbstarctCarFactory {Overridepublic AbstractCar newCar() {return new Truck();} } //小汽车工厂 public class MiniCarFactory extends AbstarctCarFactory {Overridepublic AbstractCar newCar() {return new MiniCar();} }测试类如下: public class FactoryMethodTest {public static void main(String[] args) {AbstarctCarFactory miniCarFactory new MiniCarFactory();AbstractCar miniCar miniCarFactory.newCar();miniCar.run();TruckFactory truckFactory new TruckFactory();AbstractCar truck truckFactory.newCar();truck.run();} }运行结果如下 这样如果我们有新的类型可以直接继承这个抽象工厂即可。 缺点 系统复杂度增加可创建的品类单一。 抽象工厂模式 我们先来区分两个概念 产品等级比如手机可以分为低配版手机、高配版手机产品等级结构即产品的继承结构如抽象类为手机可以有拍照手机、游戏手机等等。产品族产品可以分为手机、汽车等这是产品族。在抽象工厂模式中产品族是指由同一个工厂生产的位于不同产品等级结构中的一组产品。 在车的产品基础上我们又增加了新的产品手机。 public abstract class AbstractPhone {//手机类型String type;public abstract void run(); }public class GamePhone extends AbstractPhone {public GamePhone() {this.type 游戏手机;}Overridepublic void run() {System.out.println(this.type 正在运行了...);} }public class MyPhotoPhoneFactory implements MyAbstarctFactory{Overridepublic AbstractPhone newPhone() {return new PhotoPhone();} }如果我们想生产车和手机我们可以定义抽象工厂 public interface MyAbstarctFactory {default AbstractCar newCar(){return null;}default AbstractPhone newPhone(){return null;} }生产手机的工厂分别为 public class MyGamePhoneFactory implements MyAbstarctFactory{Overridepublic AbstractPhone newPhone() {return new GamePhone();} } public class MyPhotoPhoneFactory implements MyAbstarctFactory{Overridepublic AbstractPhone newPhone() {return new PhotoPhone();} }生产车的工厂分别为 public class MyMiniCarFactory implements MyAbstarctFactory{Overridepublic AbstractCar newCar() {return new MiniCar();} }public class MyTruckCarFactory implements MyAbstarctFactory{Overridepublic AbstractCar newCar() {return new Truck();} }测试类如下 public class MyTest {public static void main(String[] args) {MyAbstarctFactory factory new MyGamePhoneFactory();AbstractPhone abstractPhone factory.newPhone();abstractPhone.run();factory new MyMiniCarFactory();AbstractCar abstractCar factory.newCar();abstractCar.run();} }运行如下: 可以看到我们在扩展时都是新增类而不是修改原有的方法。
http://www.zqtcl.cn/news/983694/

相关文章:

  • 博客网站模板下载如何自学美工
  • 哪个免费建站好专业seo要多少钱
  • 做3d建模贴图找哪个网站珠海建设网站公司简介
  • 网站开发过程前端后端qq刷赞网站咋做
  • 湘潭高新区建设局网站旅游做攻略的网站有哪些
  • wordpress网站云备份网站模块插件是怎么做的
  • 郑州市城乡建设规划网站深圳十佳设计公司排名
  • 上海建设项目环保验收公示网站两新支部网站建设
  • 网站开发移动端网络系统软件应用与维护
  • 浙江网站建设营销网站后台管理系统一般用户名是什么
  • 网站 空间 租用wordpress搬家需要修改
  • 做网站推广怎么找客户网站换空间 seo
  • ipad网站开发seo哪家强
  • 昆明网站建设猫咪科技公司资料模板
  • 网站系统开发做网站需要填什么
  • 网站的数据库丢失建筑素材网
  • 个人网站做短视频pathon能做网站开发吗
  • 客户网站制作管理系统网站程序 wap pc 同步
  • 天津手动网站建设调试百度医院网站建设
  • ppt网站源码今天哈尔滨最新通告
  • asp网站乱码广州制作网页设计
  • 调用别人网站的数据库如何开网店卖自己的东西
  • 个人网站做影视网站开发学什么专业
  • 企业名称注册查询官网入口免费seo网站推广
  • 浙江门户网站建设公司个体工商户查询
  • 做网站的注意点赛事竞猜网站开发
  • 现在流行用什么语言做网站ppt设计教程网
  • 高端网站哪种好培训机构不退钱最怕什么举报
  • 青岛个人建站模板wordpress没有链接
  • 网上学习网站有哪些厦门城乡建设局网站