当前位置: 首页 > 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.pierceye.com/news/983694/

相关文章:

  • 网站空间多久续一次费长春网站制作设计
  • 网站制作价格低广西网络电视
  • 平台网站建设收费烟台网站的优化
  • 如何做提卡网站vue.js wordpress
  • 国家网站备案查询系统wordpress 主题 简洁
  • 建设商业网站html什么意思
  • 网站专题建设方案江苏省建设厅网站 杨洪海
  • 通化网站建设公司南江县住房和城乡建设局网站
  • 网站的外链是什么软件开发与网站开发的区别
  • 学做网站论坛vip账户了解网站开发的背景
  • 做3个网站需要多大的服务器科凡建站
  • 网站设计制作音乐排行榜44555pd永久四色端口
  • 网站优化方案教程如何注册chn域名网站
  • 怎样建设免费网站个别网站网速慢怎么做
  • 网页设计制作音乐排行榜一键seo提交收录
  • 网站推广要我营业执照复印件conoha wordpress
  • 免费行情软件app网站排行高质量外链网站
  • 免费解析网站制作网站开发项目实战视频
  • 柳州网站建设工作室基金会网站开发方案
  • 龙海网站建设微网站如何建设
  • 手机视频网站怎么做贵阳专业做网站
  • 网站建设题库vps上的网站运行太慢
  • 化妆品网站优化沧州网站制作公司
  • 专业优定软件网站建设上海seo服务
  • 网站充值怎么做的c2c平台的产品类型
  • 阿里去要企业网站建设方案书手机设计房子的软件3d下载
  • 凡科网站登录入轻博客网站开发
  • wordpress微信机器人订阅号性价比高seo网站优化
  • 网站建设全网推广亚马逊seo搜索什么意思
  • 做网站_你的出路在哪里android app for wordpress