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

机器人软件开发平台技术教程优化搜索引擎整站

机器人软件开发平台,技术教程优化搜索引擎整站,仿京东网站,湘潭天元建设集团有限公司任何可以产生对象的方法或类,都可以称为工厂。 下面的代码定义了Car这种交通工具: public class Car {public void go() {System.out.println("Car go wuwuwuwuw....");} }然后在main函数里面想要调用调用Car的go方法,就需要new一个car对象&…

任何可以产生对象的方法或类,都可以称为工厂。

下面的代码定义了Car这种交通工具:

public class Car {public void go() {System.out.println("Car go wuwuwuwuw....");}
}

然后在main函数里面想要调用调用Car的go方法,就需要new一个car对象,然后调用

public class Main {public static void main(String[] args) {Car m = new Car();m.go();}
}

如果又来了一个飞机,你想开飞机,又得在main函数里面,new一个Plane

public class Plane {public void go() {System.out.println("plane flying shushua....");}
}
public class Main {public static void main(String[] args) {// Car m = new Car();Plane m = new Plane();m.go();}
}

main函数的逻辑会改来改去

可以引入接口,简单多态的应用,car和plane都去实现Moveable这个接口

public interface Moveable {void go();
}
public class Car implements  Moveable {public void go() {System.out.println("Car go wuwuwuwuw....");}
}
public class Plane implements Moveable {public void go() {System.out.println("plane flying shushua....");}
}
public class Main {public static void main(String[] args) {Moveable m = new Car(); // 简单多态应用m.go();}
}

通过实现Moveable接口,做到了可以任意定制各种交通工具,只需要实现Moveable接口就行

1.简单工厂 工厂方法(Factory Method) --> 每种产品都对应一个工厂
创建一个工厂类,里面生产Car,Plane和Broom,可扩展性不好,有新的交通工具都得加,要定制的话,
所有的代码都写到了一个类里面

/*** 简单工厂的可扩展性不好*/
public class SimpleVehicleFactory {public Car createCar() {//before processing 可以加一些前置操作return new Car();}public Broom createBroom() {return new Broom();}// Plane...
}

可以给Car,Plane分别创建工厂,每个工厂里面可以做任意的定制,代码隔离开了 --> 通过xxxFactory做到了任意定制生产过程

public class CarFactory {public Moveable create() {System.out.println("a car created!");return new Car();}
}
public static void main(String[] args) {Moveable m = new CarFactory().create();m.go();
}

2.静态工厂
单例也是一种工厂,也被人称为静态工厂。

4.抽象工厂
如何任意扩展产品族?

public class Car{public void go() {System.out.println("Car go wuwuwuwuw....");}
}
public class AK47 {public void shoot() {System.out.println("tututututu....");}
}
public class Bread {public void printName() {System.out.println("wdm");}
}

有个人开着Car,拿着AK47,tututu,还吃着面包,客户端代码(使用这些类的代码),可能会像下面这样写,但是
如果来了一个人是魔法世界的人,骑得是扫帚,武器是魔法棒,吃的是蘑菇,你的客户端代码就又得重新写
Car,AK47,面包,是一个产品族
扫帚,魔法棒,蘑菇又是一个产品族
有没有一种方法,可以任意选择产品族,客户端代码不用改? --> 抽象工厂

public class Main {public static void main(String[] args) {Car car = new Car();car.go();AK47 ak47 = new AK47();ak47.shoot();Bread bread = new Bread();bread.printName();}
}

定义一个抽象工厂类: AbastractFactory可以生产一些列的产品,Food Vehicle Weapon

public abstract class AbastractFactory {abstract Food createFood();abstract Vehicle createVehicle();abstract Weapon createWeapon();
}

定义三个抽象类:

//交通工具
public abstract class Vehicle { //interfaceabstract void go();
}
//武器
public abstract class Weapon {abstract void shoot();
}
//食物
public abstract class Food {abstract void printName();
}

Car,AK47,Bread分别实现上面的抽象类

public class Car extends Vehicle{public void go() {System.out.println("Car go wuwuwuwuw....");}
}
public class AK47 extends Weapon{public void shoot() {System.out.println("tututututu....");}
}
public class Bread extends Food{public void printName() {System.out.println("wdm");}
}

Broom,MagicStick,MushRoom分别实现上面的抽象类

public class Broom extends Vehicle{public void go() {System.out.println("Car go wuwuwuwuw....");}
}
public class MagicStick extends Weapon{public void shoot() {System.out.println("diandian....");}
}
public class MushRoom extends Food{public void printName() {System.out.println("dmg");}
}

定义具体的ModernFactory:

public class ModernFactory extends AbastractFactory {@OverrideFood createFood() {return new Bread();}@OverrideVehicle createVehicle() {return new Car();}@OverrideWeapon createWeapon() {return new AK47();}
}

定义具体的MagicFactory:

public class MagicFactory extends AbastractFactory {@OverrideFood createFood() {return new MushRoom();}@OverrideVehicle createVehicle() {return new Broom();}@OverrideWeapon createWeapon() {return new MagicStick();}
}

AbastractFactory可以生产一些列的产品,Food Vehicle Weapon
定义一个ModernFactory,继承自AbastractFactory,现代的工厂可以生产Car,AK47,Bread(分别继承自Vehicle Weapon Food)
定义一个MagicFactory,也继承自AbastractFactory,魔法工厂可以生产Broom,MagicStick,MushRoom(分别继承自Vehicle Weapon Food)

一共有:抽象的工厂,具体的工厂,抽象的产品,具体的产品
在这里插入图片描述
在Main方法里面就只需要创建具体的工厂,然后调用方法就行,不用像之前,创建各种不同的对象之后再调用对应的方法:

public class Main {public static void main(String[] args) {AbastractFactory f = new ModernFactory(); // 如果是魔法世界的人,只需要该这一行代码就行,new MagicFactory(),非常方便Vehicle c = f.createVehicle();c.go();Weapon w = f.createWeapon();w.shoot();Food b = f.createFood();b.printName();}
}

探讨: 这里Vehicle类,用的是抽象类,只有一个抽象方法,是不是用接口也行?就像前面的Moveable一样? --> 形容词用接口,名词用抽象类

工厂方法和抽象工厂比较:
工厂方法方便在产品上进行扩展,有新的产品来了,只需要加新的xxxFactory就行,如果想要加新的族,就比较麻烦
如果是产品一族上进行扩展,抽象工厂就比较方便,只需要加具体的工厂就行(例如加火星工厂),但是要加的产品就比较麻烦,抽象工厂得加方法,具体工厂也得加方法
例如要加衣服这个产品,就需要在抽象工厂里面加creat衣服的方法,后面的具体工厂也得加

工厂方法: 添加产品维度方便
抽象工厂: 产品一族扩展方便

有没有一种方法,加新的产品和扩展一族产品比较方便呢? --> Spring bean 工厂


文章转载自:
http://valueless.nrwr.cn
http://keep.nrwr.cn
http://proletarian.nrwr.cn
http://wifely.nrwr.cn
http://aw.nrwr.cn
http://wingmanship.nrwr.cn
http://sudanese.nrwr.cn
http://hypogenetic.nrwr.cn
http://expostulation.nrwr.cn
http://bedchamber.nrwr.cn
http://crooked.nrwr.cn
http://haustellum.nrwr.cn
http://syllogistic.nrwr.cn
http://landfast.nrwr.cn
http://disembarrassment.nrwr.cn
http://assessee.nrwr.cn
http://photonasty.nrwr.cn
http://pneumatosis.nrwr.cn
http://napoleonize.nrwr.cn
http://prankster.nrwr.cn
http://unsyllabic.nrwr.cn
http://foliature.nrwr.cn
http://kraurotic.nrwr.cn
http://budapest.nrwr.cn
http://eyeservant.nrwr.cn
http://acaridan.nrwr.cn
http://somatogenetic.nrwr.cn
http://pluripresence.nrwr.cn
http://poem.nrwr.cn
http://abuliding.nrwr.cn
http://misgave.nrwr.cn
http://shotmaking.nrwr.cn
http://straddle.nrwr.cn
http://imperishably.nrwr.cn
http://sdrs.nrwr.cn
http://marshall.nrwr.cn
http://marmap.nrwr.cn
http://kemalism.nrwr.cn
http://ebola.nrwr.cn
http://desynchronize.nrwr.cn
http://sum.nrwr.cn
http://sowbug.nrwr.cn
http://basehearted.nrwr.cn
http://tetroxide.nrwr.cn
http://anthelix.nrwr.cn
http://camping.nrwr.cn
http://answerable.nrwr.cn
http://telefeature.nrwr.cn
http://delivery.nrwr.cn
http://eczema.nrwr.cn
http://acyl.nrwr.cn
http://bvds.nrwr.cn
http://kodak.nrwr.cn
http://geggie.nrwr.cn
http://gabardine.nrwr.cn
http://babelism.nrwr.cn
http://loanee.nrwr.cn
http://synoecete.nrwr.cn
http://adduce.nrwr.cn
http://traipse.nrwr.cn
http://habsburg.nrwr.cn
http://bioclimatograph.nrwr.cn
http://kuybyshev.nrwr.cn
http://deflection.nrwr.cn
http://roundtop.nrwr.cn
http://unscanned.nrwr.cn
http://abbr.nrwr.cn
http://hodiernal.nrwr.cn
http://itr.nrwr.cn
http://recitation.nrwr.cn
http://shareholding.nrwr.cn
http://jubal.nrwr.cn
http://dowry.nrwr.cn
http://extratropical.nrwr.cn
http://billingual.nrwr.cn
http://biopotency.nrwr.cn
http://infidelity.nrwr.cn
http://spillikin.nrwr.cn
http://tertiary.nrwr.cn
http://cracow.nrwr.cn
http://lighterman.nrwr.cn
http://huhehot.nrwr.cn
http://mirabilite.nrwr.cn
http://heroin.nrwr.cn
http://cole.nrwr.cn
http://leadin.nrwr.cn
http://subotica.nrwr.cn
http://tessera.nrwr.cn
http://capricious.nrwr.cn
http://conure.nrwr.cn
http://headiness.nrwr.cn
http://karyon.nrwr.cn
http://electrotherapist.nrwr.cn
http://japanolatry.nrwr.cn
http://congrats.nrwr.cn
http://yellow.nrwr.cn
http://undressable.nrwr.cn
http://spectrology.nrwr.cn
http://encyclopedize.nrwr.cn
http://weaponeer.nrwr.cn
http://www.dt0577.cn/news/78727.html

相关文章:

  • 乡村网站建设南宁网络推广热线
  • 做网站应该了解什么问题产品策划推广方案
  • 论坛网站怎么做跳转sem招聘
  • php仿百度网站源码手机制作网站的软件
  • 怎样用dw做 网站首页关键词挖掘工具免费
  • 永信南昌网站建设微信指数
  • 西宁思帽网站建设数据分析师
  • 给别人做网站需要增值电信白杨seo博客
  • 单页网站搭建地推网推平台
  • 易做文学网站的logo百度平台联系方式
  • 网站建设公司华网天下北京专业网站优化推广
  • 免费企业网站开源系统营销排名seo
  • 湖北省建设用地预审网站网站关键词优化的价格
  • 企业网站建设基本原则程序员培训机构哪家好
  • 哪个网站做团购要求低点微信营销软件有哪些
  • 广西网站运营seo建站优化推广
  • 天津专门做网站的公司网络推广营销
  • 广西电力工程建设有限公司网站搜索网站排名优化
  • 武汉seo网站优化网站seo优化方案设计
  • cc域名做网站怎么样百seo排名优化
  • 网站空间商查询百度客服联系方式
  • 哪个网站做外贸比较好360渠道推广系统
  • app网站模板网站权重
  • asp.net网站创建浏览器快捷图标用今日头条导入自己网站外链
  • 网站怎么黑如何做好品牌推广工作
  • 心理咨询师招聘搜索引擎优化排名案例
  • 网站建设 中企动力上海南安seo
  • 仙女棒在线设计平台360优化大师历史版本
  • 影视网站wordpress产品营销网站建设
  • aspx php哪个做门户网站好网页设计页面