飞行汽车建造者帮助DARPA建造“飞行悍马”

2019-09-13 07:42 来源:未知

图片 1

建造者模式,建造模式

  • 定义

  建造者模式利用一个导演者对象和一个建造者对象一个一个的创造出所有的零件,从而建造出完整的产品对象。建造者模式将产品的结构和产品的零件建造过程对客户端隐藏起来,把对建造过程进行指挥的责任和具体的建造者零件的责任分割开来,达到责任划分和封装的作用。

  类图:

图片 2

 

  • 四个要素
  • 导演者:一般是一个较为复杂的对象,也就是说创建对象的过程比较复杂,一般会有比较多的代码量。在本类图中,导演类是一个具体的类,而非抽象类。实际编程中,产品类可以是由一个抽象类与它的不同实现组成,也可以是由多个抽象类与他们的实现组成。
  • 抽象建造者:引入抽象建造者的目的,是为了将建造的具体过程交与它的子类来实现。这样更容易扩展。一般至少会有两个抽象方法,一个用来建造产品,一个是用来返回产品。
  • 建造者:实现抽象类的所有未实现的方法,具体来说一般是两项任务:组建产品;返回组建好的产品。
  • 产品类:一般是一个较为复杂的对象,也就是说创建对象的过程比较复杂,一般会有比较多的代码量。在本类图中,产品类是一个具体的类,而非抽象类。实际编程中,产品类可以是由一个抽象类与它的不同实现组成,也可以是由多个抽象类与他们的实现组成。
  • 代码实现

  产品类

 1 class Product {  
 2     private String name;  
 3     private String type;  
 4     public void showProduct(){  
 5         System.out.println("名称:" name);  
 6         System.out.println("型号:" type);  
 7     }  
 8     public void setName(String name) {  
 9         this.name = name;  
10     }  
11     public void setType(String type) {  
12         this.type = type;  
13     }  
14 } 

  抽象建造者

1 abstract class Builder {  
2     public abstract void createPart(String arg1, String arg2);  
3     public abstract Product getProduct();  
4 }

  具体建造者

 1 class ConcreteBuilder extends Builder {  
 2     private Product product = new Product();  
 3       
 4     public Product getProduct() {  
 5         return product;  
 6     }  
 7   
 8     public void createPart(String arg1, String arg2) {  
 9         product.setName(arg1);  
10         product.setType(arg2);  
11     }  
12 } 

  导演者

 1 public class Director {  
 2     private Builder builder = new ConcreteBuilder();  
 3     public Product getAProduct(){  
 4         builder.createPart("宝马汽车","X7");  
 5         return builder.getProduct();  
 6     }  
 7     public Product getBProduct(){  
 8         builder.createPart("奥迪汽车","Q5");  
 9         return builder.getProduct();  
10     }  
11 }

  上面的只是建造者模式最基本的用法,现实生活中有很多建造者模式的变形,如产品有多个零件组成,所以要先创建产品零件,在利用具体的产品零件创造出产品,这样就需要在建造者中先一步一步创建零件,再组装产品;每个产品的零件不一定样,为每一个产品创建具体的建造者。等等还有很多的变形。那么在什么时候使用建造者模式呢:

  • 建造者模式的使用场景

  1、需要生成的对象有复杂的内部结构,每个内部成分本身可以是对象,也可以仅仅是一个对象的一个组成部分。

  2、需要生成的对象的属性相互依赖。建造者模式可以强制实行一种分步骤进行的建造过程。因此,如果产品对象的一个属性必须在另一个属性被赋值之后才可以被赋值。

  3、对象的创建过程中会使用到系统中其他一些对象,这些对象在产品的创建过程中不易得到。

  • 建造者模式的优点

  首先,建造者模式的封装性很好。使用建造者模式可以有效的封装变化,在使用建造者模式的场景中,一般产品类和建造者类是比较稳定的,因此,将主要的业务逻辑封装在导演类中对整体而言可以取得比较好的稳定性。

      其次,建造者模式很容易进行扩展。如果有新的需求,通过实现一个新的建造者类就可以完成,基本上不用修改之前已经测试通过的代码,因此也就不会对原有功能引入风险。

  • 建造者模式与工厂模式的区别

  前面刚刚介绍了工厂模式,它们都是创建模式。 我们可以看到,建造者模式与工厂模式是极为相似的,总体上,建造者模式仅仅只比工厂模式多了一个“导演类”的角色。在建造者模式的类图中,假如把这个导演类看做是最终调用的客户端,那么图中剩余的部分就可以看作是一个简单的工厂模式了。

  与工厂模式相比,建造者模式一般用来创建更为复杂的对象,因为对象的创建过程更为复杂,因此将对象的创建过程独立出来组成一个新的类——导演类。也就是说,工厂模式是将对象的全部创建过程封装在工厂类中,由工厂类向客户端提供最终的产品;而建造者模式中,建造者类一般只提供产品类中各个组件的建造,而将具体建造过程交付给导演类。由导演类负责将各个组件按照特定的规则组建为产品,然后将组建好的产品交付给客户端。

  因此,在复杂对象的创建过程中一般既有建造者模式也有工厂模式,利用工厂模式返回不同的零件,在利用建造者模式将不同的零件组装成更为复杂的产品。工厂模式处于更加具体的尺度上,而建造者模式处于更加宏观的尺度上。

  

定义 建造者模式利用一个导演者对象和一个建造者对象一个一个的创造出所有的零件,从而建造出完整的产品对象...

DARPA 宣佈他们用于反潜艇的无人船(Anti-Submarine Warfare Continuous Trail Unmanned Vessel - ACTUV)已经开始建造了。它配备了声纳、电光学短程雷达和光学雷达技术来深测敌人,会由武器製造商 Leidos 来建造,预计首次试航会在 2015 年内进行。其实 2015 年距离现在不是很久,那麽表示建造一艘这样的无人船很快?没错,Leidos 预计只需要 15 个月就可以完成一艘了,因为它会用上模组化的模式去组装,而且船上不用建立为人类而设的设施,所以工程可以这麽快完成,有可能也是得益于此。不过由于这艘船是由人工智能去控制,系统必须要聪明和可靠,因此 DARPA 也在开发系统的时候,推出了一款 ACTUV Tactics Simulator 的潜艇游戏来集合众多玩家的大智慧。总言之,期待 ACTUV 的试航啊。

图片 3 美国AAI公司设计的飞行悍马车概念图

建造者模式

建造者:创建和提供实例,导演:管理建造出来的实例的依赖关系。

我们想要买汽车 - 奥迪A6,去了4S店以后,我们发现这玩意根据不同的套餐价格也是不一样的。车的大体没有改变,但是内部设置却不同了。

奥迪A6 :
20万 配置 沙发和空调
30万 配置 空调和美女
40万 配置 美女和电脑

/**
 * Created by malei on 2016/12/5.
 */
public class HuaweiCompany {
    private String ceo;
    private String cto;
    private String cao;

    /*构造方法中持有建造者对象
    * 导演:管理建造出来的实例的依赖关系。*/
    public HuaweiCompany(CompanyBuilder builder){
        this.ceo = builder.ceo;
        this.cto = builder.cto;
        this.cao = builder.cao;
    }

    /*需要被构建的对象只提供 getter 方法*/
    public String getCeo(){
        return ceo;
    }
    public String getCto() {
        return cto;
    }
    public String getCao() {
        return cao;
    }

    /*建造者作为静态内部类使用
    * 建造者:创建和提供实例*/
    public static class CompanyBuilder{
        private String ceo;
        private String cto;
        private String cao;

        /*按需为建造者提供不同的构造方法*/
        public CompanyBuilder(String ceo){
            this.ceo = ceo;
        }
        public CompanyBuilder(){
        }

        /*返回被构建的对象*/
        public HuaweiCompany build(){
            return new HuaweiCompany(this);
        }

        /*只提供 setter 方法*/
        public CompanyBuilder setCeo(String ceo) {
            this.ceo = ceo;
            return this;
        }

        public CompanyBuilder setCto(String cto) {
            this.cto = cto;
            return this;
        }

        public CompanyBuilder setCao(String cao) {
            this.cao = cao;
            return this;
        }
    }

    private void say() {
        Log.show("ceo=" ceo   "ncto=" cto "ncao=" cao);
    }

    public static void main(String[] args){
        HuaweiCompany buidler = new CompanyBuilder()
                .setCeo("马磊")
                .setCto("马云")
                .setCao("马化腾").build();
        buidler.say();
    }
}

[据英国《飞行国际》近日报道]飞行汽车的制造商Terrafugia公司目前收到一份来自达信公司的子公司AAI的一份为期5年的合同,将为美国预先研究计划局的“飞行悍马”研发项目提供其经验。

图片 4 美国洛克希德马丁公司设计的飞行悍马车概念图

该飞行器载客4人,能在公路上行驶,机动性与直升机相似,能够进入更复杂的地形。该飞行器在空中和地面的航程为465km,同时还能进行自动飞行。该合同对于完成飞行汽车原型机设计的12位工程师来说是一种鼓励,预计该飞行汽车将于2011年末开始交付。Terrafugia建造了两架原型机,在经过28天的试验之后公司取消了其中一种。

  你能想象汽车可以像直升机一样自由升降和飞翔吗?这一梦想不再只是好莱坞电影中的特效画面,而有望在2015年成为现实。

此次DARPA授予AAI的这份合同分为三个阶段,第一阶段为期18个月的概念研究,其后将进行设计和制造工作,预计2015年初原型机将实现首飞。

  据美国媒体10月25日报道,美国国防部高级研究规划局(DARPA)日前透露,该局的“飞行悍马军车”计划已收到了来自AAI公司和洛克希德 马丁两家公司的可行性设计稿。这两家公司的设计都已进入第二阶段,将于2012年结束前进入原型制作阶段。如果第二阶段如期结束,意味着这种会飞的悍马军 车将有望在2015年中期左右进行陆空实地演习。

  其实,设计中的这种飞行悍马军车并非只有超炫外表这一噱头,作为供陆空两栖使用的交通工具,其设计理念可谓是集实用性与人性化于一身。飞行悍马军车除了能够在短时间内迅速变形成为一架能够垂直升降的飞机外,还能够运输轻型武器装备,并可搭乘含飞行员在内的四名士兵。

  尽管外形新颖独特,它的驾驶操作方法却十分简便。在无人驾驶系统的帮助下,只要是拥有汽车驾照的士兵都可以安全、轻松地驾驭飞行悍马军车。

  不过,飞行悍马军车要想早日投入使用,还需要攻克一些难题。首先,车身材料要足够轻巧,以便动力能够将车身带上天空;否则就还需要在车内配置一 台动力强劲的发电机并安装特制的机翼或螺旋桨。另外,在配备了所有必需的硬件设备之后,车身仍然需要留出足够四人使用的乘坐空间。

TAG标签:
版权声明:本文由开户免费送体验金38元发布于开户免费送体验金38元,转载请注明出处:飞行汽车建造者帮助DARPA建造“飞行悍马”