阿里电视机经验记

Design pattern

看电视机的沉闷

常见TV节目已经很少看了(除了CC电视机9记录频道),看电视机重要看互联网内容,显示的是“只看自己想看的”原则。无线电视机提供了“互动电视”效用,有一点象互联网内容,可惜其中的免费电影大多数是预告类,或者是很古老的,没有太大的兴趣。其它就是用遥控器操作相比费心,用户界面设计、使用流程令人憋屈,例如免费的影视也要出付费界面确认,真是多此一举。最近播送无线电视机得到运营资格,希望他们在这方面有所改进。

周四闲来无事,准备折腾折腾用怎么样方法让大电视机看视频更便宜一些,于是有了下边的记录。

许两个人相应听说过设计形式(Design
pattern),又或多或少的看过或用过设计形式,但是其实用在开发过程中总有点不能的痛感。那一定是对设计格局的通晓有半点偏向或者不够深远。先不谈某种现实的形式,先来探望怎样是设计形式?

从概论结合实际场景分析

Taobao魔盒出场

早年在场1111平移中奖一台Tmall魔盒,当时有兴奋劲的时候看的多一些,后来就闲置了。这会儿又想起来了,拿出来折腾一下。
启航后似乎察觉有新本子要立异,这就更新吧。等了绵绵没结果,忍不住重启了。本次直接进入初期的界面。

哪些是设计格局?

设计情势是一套代码设计「经验的下结论」。项目中「合理的」运用设计格局可以「精美绝伦的解决许多题材」。

  • 经历的总计:抱着「代码虐我千百遍,我待代码如初恋」的心思,最终得出来的「套路」。

  • 理所当然的:要对设计形式的施用境况有一定的认识后才使用,「不要滥用」。如:输出一句“hello
    world”,非要强行给加上各个形式。
    问:“为何”,答:“总感觉少了格局!”。

  • 巧妙的解决了过多题材:被广泛应用的由来。

为何要提倡“Design
Pattern呢?根本原因是为了代码复用,扩张可维护性。那么怎么才能实现代码复用呢?

阿里电视机帮手助攻

刚刚等待的时候,想到现在有诸多手机App能与盒子连接,Tmall也应当有啊?搜索得到“阿里电视援手”,即便名字不完全等同,预计功用差不多,一个字:装!
果真前面就总是上了,提供了手机遥控器效率,操控就便宜多了。
手机里面平昔拔取一个电影,让投影到电视机上播放,试验提醒:电视版本低,无法连接。没办法,升级电视操作系统版本,于是又是遥遥无期的等候。
新兴到底可以了:把手机电影投影到电视。甚至,不止是这多少个App,其他App如网易云课堂、优酷等的视频都得以投影到电视机,等于天猫魔盒提供了同频器效率,那终究一个竟然的取得。

设计格局之六大标准

移动硬盘上

天猫魔盒后边有一个USB接口,把移动硬盘接入,启动暴风影音,采用播放本地视频,果然成功!
自然也有遗憾,倘诺让暴风扫描移动硬盘中的录像,剩下的就是苦苦的等候,且不能收场。直到绝望关闭魔盒重启,改为手动采用路径,才就此躲过一劫。

开闭原则(Open Close Principle)

1988年,勃兰特·梅耶(Bertrand
Meyer)在他的编著《面向对象软件构造(Object Oriented Software
Construction)》中指出了开闭原则,它的原稿是这般:“Software entities
should be open for extension,but closed for modification”。

  • 趣味:软件模块应该对扩充开放,对修改关闭。
  • 举例:在程序需要进行增产功能的时候,不可能去修改原有的代码,而是新增代码,实现一个热插拔的功能(热插拔:灵活的删减或加上效果,不影响到原来的效能)。
  • 目标:为了使程序的扩大性好,易于维护和升级。

挖宝App

除去看视频、装App,还有什么好玩的吗?

在采取手机遥控器的时候,注意到除了最广泛的“按键遥控”情势,还提供“体感遥控”、“游戏手柄”和“方向盘”等形式,逐个试试看。

“体感遥控”自然是和体感游戏相关,安装了一个羽毛球游戏,初始试验。尽管刚起初对操作按钮的功力不太熟识,经过一番形式为主确认“B”是废除,“A”是确认,如此就可以玩了。对战开头,用手机作为羽毛球拍,打起来也终究那么几遍事,跳起来很快拍下,模拟扣球动作,哈哈,赢了!好不容易一局停止,累的那些,看来玩这几个游乐也是在家操练的一种好模式了。需要专注的是,正如手机提醒,用手机玩体感游戏,千万注意不要把手机不小心甩出去。

阿里电视机助手还提供了一部分健身、瑜伽、太极等接纳,对于推进在家磨炼相信大有裨益吧。

无意发现一个手机唱歌的App“歌呢”,当时以为是“唱呢”,赶紧在手机上设置、打开唱啊,却发现不能够和屏幕上的使用举行二维码扫描连接。仔细一看,然来以此动用是“歌吧”,不是“唱呢”。重新安装,连接,试验成功。尝试在二哥大上唱歌,声音和镜头从电视里出来,似乎家庭卡拉OK就这样搭建起来了。不过那多少个遗憾的是,电视广播出来的动静延迟相比较厉害,且回音太大,总体效益难以接受。

完全来看,通过互联网选用,可以拉动电视利用率分明提高。当然要达标极致效果,还需要魔盒硬件、网速、周边设备硬件等更是升级,与软件万分达到天衣无缝的境界,才能更好地抓住人们回到电视机身旁。

里氏代换原则(Liskov Substitution Principle)

  • 趣味:里氏代换原则是延续复用的水源,唯有当衍生类可以替换掉基类,软件单位的听从不面临震慑时,基类才能真的被复用,而衍生类也可以在基类的底蕴上平添新的行事。
  • 举例来说:球类,原本是一种体育用品,它的衍生类有篮球、足球、排球、羽毛球等等,假使衍生类替换了基类的原本方法,如把体育用品改成了食用品(那么软件单位的职能受到震慑),就不相符里氏代换原则。
  • 目标:对促成抽象化的具体步骤的正经。

借助倒转原则(Dependence Inversion Principle)

  • 意思:针对接口编程,而不是本着落实编程。
  • 举例来说:以电脑序列为例,无论主板、CPU、内存、硬件都是在针对接口设计的,尽管针对落实来规划,内存就要对应到针对某个品牌的主板,那么会现出换内存需要把主板也换掉的难堪。
  • 目的:降低模块间的耦合。

接口隔离原则(Interface Segregation Principle)

  • 使用三个隔离的接口,比拔取单个接口要好。
  • 举例来说:比如:登录,注册时属于用户模块的六个接口,比写成一个接口好。
  • 目标:提升程序设计灵活性。

迪米特法则(最少知道原则)(Demeter Principle)

1987年冬季由弥利坚Northeastern University的伊恩Holland指出,被UML的创始者之一[Booch]等推广。后来,因为在经典作品《
The Pragmatic Programmer》而头面。

  • 意思:一个实体应当尽量少的与此外实体之间暴发相互效能,使得系统功能模块相对独立。
  • 举例:一个类公开的public属性或艺术越多,修改时提到的面也就越大,变更引起的风险扩散也就越大。
  • 目标:降低类之间的耦合,裁减对其它类的倚重。

单一任务规范( Single responsibility principle )

该规则由罗Bert·C·马丁(Martin)(罗Bert C.
马丁)于《敏捷软件开发:原则、形式和施行》一书中付出的。马丁代表此规范是遵照汤姆·狄马克(TomDeMarco)和Meilir
Page-琼斯(Jones)的作文中的内聚性原则发展出的。

  • 趣味:一个类只承担一个效用领域中的相应职责,或者可以定义为:就一个类而言,应该只有一个挑起它生成的因由。
  • 比喻:该标准意思简单到不需要举例!
  • 目的:类的复杂降低,可读性提升,可维护性提升。

刚出道的时候,在想怎么样的代码是好代码?看到众多前辈的文字都说好的代码要适合「高内聚,低耦合」,可是本人听到如此的演说,是这样的

而现行对设计模式有了迟早程度上的学习,感觉懂了部分,小伙伴们你们学会了呢?

高内聚,低耦合?

  • 内聚是从效用角度来度量模块内的关联,一个好的内聚模块应当恰好做一件事。它描述的是模块内的功用互换;
  • 耦合是软件结构中各模块之间相互连接的一种度量,耦合强弱取决于模块直接口的复杂程度、进入或访问一个模块的点以及通过接口的数码。

推介阅读:
LOL设计格局之「策略情势」