阿里电视机经验记

Design pattern

看电视机的郁闷

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

礼拜四闲来无事,准备折腾折腾用什么样办法让大电视看电影更方便一些,于是有了下面的笔录。

成千上万人应当听说过设计形式(Design
pattern),又或多或少的看过或用过设计形式,不过事实上用在支付过程中总有点不能的觉得。这肯定是对设计情势的精晓有有限谬误或者不够深入。先不谈某种现实的形式,先来看看哪些是设计模式?

从概论结合实际场景分析

天猫魔盒出场

往昔到位1111平移中奖一台天猫魔盒,当时有兴奋劲的时候看的多一些,后来就束之高阁了。这会儿又想起来了,拿出去折腾一下。
开行后似乎察觉有新本子要立异,这就立异吧。等了长久没结果,忍不住重启了。这一次直接进去先前时期的界面。

什么是设计形式?

设计情势是一套代码设计「经验的下结论」。项目中「合理的」运用设计格局可以「高明的缓解许多问题」。

  • 经历的下结论:抱着「代码虐我千百遍,我待代码如初恋」的情绪,最后得出去的「套路」。

  • 合理的:要对设计模式的使用情形有早晚的认识后才使用,「不要滥用」。如:输出一句“hello
    world”,非要强行给加上各类格局。
    问:“为啥”,答:“总觉得少了格局!”。

  • 高超的解决了无数题目:被广泛应用的因由。

何以要倡导“Design
Pattern呢?根本原因是为着代码复用,扩展可维护性。那么怎么才能兑现代码复用呢?

阿里电视机入手助攻

刚才等待的时候,想到现在有许多手机App能与盒子连接,天猫也相应有吗?搜索得到“阿里电视援手”,即使名字不完全平等,估摸效能差不多,一个字:装!
果真前边就连续上了,提供了手机遥控器功效,操控就有利于多了。
手机内部一贯采纳一个影视,让投影到电视上播放,试验指示:电视版本低,不能连接。没办法,升级电视操作系统版本,于是又是绵长的守候。
后来好不容易得以了:把手机电影投影到电视机。甚至,不止是其一App,其他App如天涯论坛云课堂、优酷等的视频都足以投影到电视,等于Taobao魔盒提供了同频器效率,这到底一个出乎意料的收获。

设计情势之六大原则

移动硬盘上

Taobao魔盒后边有一个USB接口,把移动硬盘接入,启动暴风影音,选取播放本地录像,果然不负众望!
当然也有不满,尽管让暴风扫描移动硬盘中的视频,剩下的就是苦苦的等候,且不可以收场。直到绝望关闭魔盒重启,改为手动选项路径,才就此躲过一劫。

开闭原则(Open Close Principle)

1988年,勃兰特·梅耶(伯特rand
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年夏日由美利坚合众国诺思(North)eastern University的伊恩Holland提出,被UML的创始者之一[Booch]等推广。后来,因为在经典小说《
The Pragmatic Programmer》而出名。

  • 趣味:一个实体应当尽量少的与此外实体之间时有发生相互成效,使得系统功效模块相对独立。
  • 比方:一个类公开的public属性或措施越多,修改时提到的面也就越大,变更引起的风险扩散也就越大。
  • 目标:降低类之间的耦合,收缩对此外类的依赖。

纯净任务规范( Single responsibility principle )

该标准由Robert(Bert)·C·马丁(Martin)(罗Bert(Robert) C.
马丁(Martin))于《敏捷软件开发:原则、形式和实施》一书中提交的。马丁代表此规范是依照汤姆·狄马克(汤姆DeMarco)和Meilir
Page-琼斯(Jones)的行文中的内聚性标准化提高出的。

  • 趣味:一个类只承担一个职能领域中的相应职责,或者可以定义为:就一个类而言,应该只有一个唤起它生成的缘由。
  • 比喻:该条件意思简单到不需要举例!
  • 目标:类的纷繁降低,可读性提升,可维护性进步。

刚出道的时候,在想怎么样的代码是好代码?看到众多前辈的文字都说好的代码要吻合「高内聚,低耦合」,但是我听见如此的分解,是这般的

而现行对设计模式有了必然水平上的学习,感觉懂了有些,小伙伴们你们学会了啊?

高内聚,低耦合?

  • 内聚是从效用角度来度量模块内的交流,一个好的内聚模块应当恰好做一件事。它讲述的是模块内的效率交流;
  • 耦合是软件结构中各模块之间相互连接的一种度量,耦合强弱取决于模块直接口的复杂程度、进入或访问一个模块的点以及由此接口的多寡。

引进阅读:
LOL设计形式之「策略情势」