早在二〇一七年8月,System76
就已发布他们将起来设计和塑造他们和睦的微型机,从台式机早先,然后本身制作台式机,并非要过度依靠于中游中间商。近日线总指挥部的来讲,这家总局放在俄亥俄州的厂商正在附近完全落到实处其指标。

资深的 Linux PC 创造商 System76
已经开首测量检验他们将会在今后几周揭露的“新款开源Computer”。

前言

原先教师过简短工厂方式和工厂方式,这一篇大家来读书工厂体系的终极七个形式抽象工厂格局,提出在读书此文前,请先阅读设计形式(四)轻便工厂情势、设计情势(十)工厂方法情势这两篇小说。

澳门新葡萄京官网注册 1

她们在其官方博客上澳门新葡萄京官网注册,宣布,“System76
正在发表一款新的开源计算机,可在前些时间实行预定。”

空洞工厂形式定义

虚幻工厂格局能够说是是工厂方法形式的升高版,当须要成立的成品有四个成品线(成品族)时接受抽象工厂形式是比较好的选项。那怎么是八个付加物线呢?拿我们在设计格局(四)简单工厂情势、设计形式(十)工厂方法情势中学习的临盆Computer的例子来比喻,大家直接都以生育联想和宏碁的微机,但是Computer也可能有四个产物线:台式机、台式机和平板等等,联想和ASUS都在生养这一个差异出品线上的计算机,使用工厂方法形式已经满意不断要求,这一篇文章我们就用抽象工厂情势来缓慢解决这一难点。

空洞工厂方式定义
为成立一组有关只怕相互相信任任的对象提供三个接口,而无需点名它们的具体类。

空洞工厂情势UML图

澳门新葡萄京官网注册 2

那边写图片描述

在虚幻工厂情势中有如下剧中人物:

  • AbstractFactory:抽象工厂,它申明了用来创建分歧出品的章程。
  • ConcreteFactory:具体育工作厂,达成抽象工厂中定义的成立付加物的方式。
  • AbstractProduct:抽象产物,为每一个付加物申明业务方法。比如上海体育场地的AbstractProductA和
    AbstractProductB。
  • ConcreteProduct:具体成品,定义具体育工作厂生产的求实产物,并落实抽象付加物中定义的事体方法。

有一段时间,System76
的工作者曾公布他们正在进展的造作工厂的各个图片,而明天她们又在博客上分享了更加多的图样。

虽说她们制作的预装了 Ubuntu(以往是依靠 Ubuntu 的 Pop!_OS) 的 PC
已出世超越十年,但她俩的连串都并未有在硬件品级上“开源”,也不曾行使 Coreboot/Libreboot/LinuxBoot。到如今截至,他们的硬件首要基于
Clevo
硬件。所以,此次的昭示释放了她们脚下正值步入更开源的硬件领域的实信号吧?

抽象工厂格局大概达成

联想和ASUS分娩的Computer分为了多少个成品线,一个台式机,一个是笔记本。为了减轻扩大付加物线的难点,大家用抽象工厂形式来打开落实。

泛泛产物
先是定义抽象产物类:

public abstract class DesktopComputer {
  public abstract void start();
}
public abstract class NotebookComputer {
   public abstract void start();
}

三个抽象产物类分别为Desktop计算机和Notebook计算机,用来定义多个产物线:台式机和台式机。它们都定义了start方法,用来运行计算机。
现实产物
具体产品为联想和ThinkPad旗下的台式机和台式机,如下所示。

public class LenovoDesktopComputer extends DesktopComputer {
    @Override
    public void start() {
        System.out.println("联想台式电脑启动");
    }
}

public class HpDesktopComputer extends DesktopComputer {
    @Override
    public void start() {
        System.out.println("惠普台式电脑启动");
    }
}

public class LenovoNotebookComputer extends NotebookComputer {
    @Override
    public void start() {
        System.out.println("联想笔记本电脑启动");
    }
}
public class HpNotebookComputer extends NotebookComputer {
    @Override
    public void start() {
        System.out.println("惠普笔记本电脑启动");
    }
}

架空工厂
随之创立分娩Computer的架空工厂,如下所示,

public abstract class ComputerFactory {
    public abstract DesktopComputer createDesktopComputer();
    public abstract NotebookComputer createNotebookComputer();
}

概念了八个措施,分别用惠临蓐台式计算机和台式机电脑。

实际工厂
概念联想和戴尔工厂:

public class LenovoFactory extends ComputerFactory {
    @Override
    public DesktopComputer createDesktopComputer() {
        return new LenovoDesktopComputer();
    }
    @Override
    public NotebookComputer createNotebookComputer() {
        return new LenovoNotebookComputer();
    }
}

public class HpFactory extends ComputerFactory {
    @Override
    public DesktopComputer createDesktopComputer() {
        return new HpDesktopComputer();
    }

    @Override
    public NotebookComputer createNotebookComputer() {
        return new HpNotebookComputer();
    }
}

联想工厂和华硕工厂用来临盆台式机和台式机那三个例外出品线的Computer。

客户端调用
终极编写客商端:

public class Client {
    public static void main(String[]args) {
        ComputerFactory lenocoFactory=new LenovoFactory();
        lenocoFactory.createDesktopComputer().start();
        lenocoFactory.createNotebookComputer().start();
        ComputerFactory hpFactory=new HpFactory();
        hpFactory.createDesktopComputer().start();
        hpFactory.createNotebookComputer().start();
    }
}

各自用DellFactory和HpFactory分娩台式和台式机计算机,并调用start方法运维它们。
运营结果为:
联想台式计算机运转
联想台式机Computer运营
Acer台式Computer运行
Lenovo台式机Computer运行

接下去提交那几个例子的UML图,更利于掌握,如下所示。

澳门新葡萄京官网注册 3

此处写图片描述

澳门新葡萄京官网注册 4

System76 创办人兼董事长 Carl Richell 前天在 推特(Twitter卡塔尔国上发布消息称,在本周的吐放硬件峰会上,他们将显示“就要公布的开放式硬件桌面”。该桌面也许被称作”Thelio”。 

泛泛工厂方式的利弊

优点
具体类的创设实例进度与客商端分离,客商端通过工厂的用空想来欺骗别人接口垄断实例,客商端并不知器材体的兑现是哪个人。

缺点
设若扩展新的产物族则也供给矫正抽象工厂和颇负的切切实实工厂。

澳门新葡萄京官网注册 5

多少个月来,他们径直致力于最早塑造自身的台式机,并在 Twitter上分享他们的扩充:

虚幻工厂情势的采用情状

  • 多个体系不注重于成品线实譬怎么着被创建、组合和表述的内部原因。
  • 系统中有多于多个的付加物线,而每一趟只利用此中某一出品线。
  • 贰个成品线(或是一组并未有任何关系的对象)具备相同的限制。

参照他事他说加以考查资料
《大话设计形式》
《设计格局之禅》
《Android源码设计形式》


接待关切自个儿的Wechat群众号,第不时间获得博客更新提醒,以至更多成体系的Android相关手艺干货。
扫一扫下方二维码就可以关心:

澳门新葡萄京官网注册 6

enter image description here

澳门新葡萄京官网注册 7

澳门新葡萄京官网注册 8
粉末涂层展位已竣工

他俩正在着力促成他们在U.S.A.营造 Linux PC 的对象,最早是台式机—— 早先他们的目的是在二零一八年实现,然后是台式机Computer,看起来他们犹如正在走上正轨。

澳门新葡萄京官网注册 9
用以新台式机临蓐线的 800 磅铝构件

虽说她们尚未出示本人具备创造设备的图片,但足以见见,就像是至少有3D打字与印刷机、激光切割机、上色、焊接等装置。

澳门新葡萄京官网注册 10
测量试验粉末喷涂技能的水温

有意思味查看他们新创设工厂当前意况的局部相片得以访谈 System76
的博客。

他们将在坐蓐的 PC
不小概就要机箱原理图和步向系统的别的其他自定义零件方面开放,但在此个阶段它们好似未有运用其他ARM / CRUISERISC-V / POWE福睿斯 路由,以获得一个的确开放的硬件平台。如若她们的 PC
桌面组件不是现存的 x86_64
硬件,那将是令人诧异的,但假诺那几个开源Computer起码可用于
Coreboot/Libreboot 等,那将会很有意思。

(文/开源中国卡塔尔(قطر‎    

不管不顾,我们相应会在接下去的多少个星期内得到越多的音讯,以至在德克萨斯奥斯汀分校高校绽开硬件高峰会议上开采越多细节。

(文/开源中华夏族民共和国卡塔尔(قطر‎