- 博客(34)
- 收藏
- 关注
原创 P7:迪米特法则(LoD)
一、定义: 迪米特法则(Law of Demeter)又叫作最少知识原则(Least Knowledge Principle 简写LKP),就是说一个对象应当对其他对象有尽可能少的了解,不和陌生人说话。英文简写为: LoD. 该法则强调了以下两点: 第一要义:从被依赖者的角度来说:只暴露应该暴露的方法或者属性 第二要义:从依赖者的角度来说:只依赖应该依赖的对象 二、学习案例: 定义一个Compu...
2019-11-29 15:41:25
390
原创 P6:合成复用原则(CRP)
合成复用原则,Composite Reuse Principle,简称CRP. 一、定义 在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分;新的对象通过向这些对象的委派达到复用已有功能的目的。简单来说就是:尽量使用合成/聚合,尽量不要使用继承。 1、合成: 合成表示一种强的拥有关系,同生同灭。比如: 一个人新出生的人,人有两个胳膊,胳膊和人就是部分和整体的关系。人去世了,那么胳膊也就没...
2019-11-29 11:21:41
463
原创 P5:接口隔离原则(ISP)
接口隔离原则,Interface Segregation Principle,简称ISP 一、定义: 使用多个专门的接口比使用单一的总接口要好: 一个类对另外一个类的依赖性应当是建立在最小的接口上的。 一个接口代表一个角色,不应当将不同的角色都交给一个接口。没有关系的接口合并在一起,会出现接口的污染现象。 通俗理解,不要强迫客户使用它们不用的方法,如果强迫用户使用它们不使用的方法,那么这些客户就...
2019-11-29 10:49:43
497
原创 P4:依赖倒转原则(DIP)
一、定义 依赖倒置原则(Dependence Inversion Principle,DIP)是程序要依赖于抽象接口,不要依赖于具体实现。简单的说就是要求对抽象进行编程,不要对实现进行编程,这样就降低了客户与实现模块间的耦合。 下面通过对面向过程和面向对象的编程思想差异来理解依赖倒转原则: 1、面向过程: 面向过程的开发模式是上层调用下层,上层依赖于下层,当下层发生变动时上层也要跟着变动,这就会导...
2019-11-28 16:59:31
342
原创 P3:里氏替换原则(LSP)
里氏替换原则(Liskov Substitution Principle),简称LSP. 一、定义: 美国计算机科学Barbara Liskov提出定义如下: 如果对每一个类型为S的对象o1,都有类型为T的对象o2,使得以T定义的所有程序P在所有的对象o1代换o2时,程序P的行为没有变化,那么类型S是类型T的子类型。 引用基类(父类的)地方都可以用子类来替换,但是反过来就不行。比如,香蕉是水果,...
2019-11-28 10:10:55
341
原创 P2:开闭原则(OCP)
一、开闭原则简介 开闭原则Open-Closed Principle,简称OCP,是面向对象的可复用设计中最重要的设计原则,具体定义如下:一个系统应当对扩展开放,对修改关闭,即软件系统应在不修改原有功能代码的情况下进行扩展(非必要时不轻易修改原有功能实现)。 遵循开闭原则的好处: 1、测试复用性:不影响原有的测试代码,只需对扩展部分的代码进行增量测试即可; 2、功能复用性:提高代码的复用性,避免陷...
2019-11-27 11:18:48
535
原创 P1:单一职责原则(SRP)
一、定义 类的职责要单一,不要讲过多的职责功能放到一个类中。 一个类只负责一个功能领域中的相应职责。 如果一个类的所做的事情很多,就难以实现复用,而且各种职责的耦合度会变高。所以,应该将不同职责封装在不同类中,不同的功能变化封装在不同类中。这样,接口的功能比较专一,可读性、复用性都很高,也容易维护。 二、设计思路 假设我们要设计一个系统,有如下登录、注册、支付等功能,类结构如下: /** ...
2019-11-26 18:05:45
578
原创 Linux常用命令大全
收集了Linux常用的命令,供大家参考学习: 1、关机命令 // 关闭系统三种方式 shutdown -h now init 0 telinit 0 // 按预定时间关闭系统 shutdown -h hours:minutes //取消按预定时间关闭系统 shutdown -c //重启 shutdown -r now reboot //注销 logout 2、查看系统命令 //显示机器的...
2019-11-25 11:01:37
243
原创 Vue入门教程15-Ajax(axios)请求
Axios 是一个基于 Promise 的 HTTP 库,可在浏览器和 node.js 中使用,本章节我们使用Axios 进行Ajax请求。 一、GET请求 参考下图,在static中建一个demo.json文件: demo.json: { "name":"AjazDemo", "num":3, "sites": [ { "name":"demo01", "info":[ "...
2019-11-20 16:43:20
368
原创 Vue入门教程14-混入
<template> <div id="app"> </div> </template> <script> import Vue from "vue"; export default { name: 'app', data(){ return{ } }, metho...
2019-11-20 15:52:30
380
原创 Vue入门教程13-过渡效果和动画
一、过渡效果 当插入或删除 transition 组件中的元素时,Vue 将会做以下处理: 1、自动嗅探目标元素是否应用了 CSS 过渡或动画,如果是,会根据过渡或动画的设置在恰当的时机添加/删除 CSS 类名。 2、如果过渡组件提供了 JavaScript 钩子函数,这些钩子函数将在恰当的时机被调用。 4、如果没有找到 JavaScript 钩子并且也没有检测到 CSS 过渡/动画,DOM 插入...
2019-11-20 11:17:04
394
原创 Vue入门教程12-简单路由搭建
学习了Vue的基础内容之后,这个章节开始搭建一个简单的路由。 1、创建模板组件: 开始创建四个组件 ,分别命名为abc.vue页面: 2、定义路由: 在router index.js文件里面定义路由配置: 3、页面配置路由跳转: 在app.vue中使用router-link配置路由跳转: 源码参考: <div id="app"> <h1>Hello App...
2019-11-18 17:23:11
368
原创 Vue入门教程11-自定义指令
使用 Vue.directive 注册全局指令 v-myfocus, 使input元素自动获得焦点: <template> <div id="hello"> <p>使 input 元素默认获取焦点:</p> <input v-myfocus> </div> </template> <s...
2019-11-18 15:36:56
382
原创 Vue入门教程10-组件的使用
Vue 最强大的功能之一就是组件(Component)! 组件可以扩展 HTML 元素,封装可重用的代码,方便开发者更灵活的构建大型的前端项目。 一、定义全局组件 全局组件定义格式:Vue.component(tagName, options),下面的程序我们注册一个全局组件,并使用<helloWorld></helloWorld>的标签进行引用: <template...
2019-11-18 11:34:52
461
原创 Vue入门教程09-表单处理
一、input 和 textarea 输入框 在之前的学习案例中,我们经常使用 v-model=“message” 的方式实现双向数据绑定,而且v-model 会忽略所有表单元素的 value、checked、selected 特性的初始值,总是以 Vue 实例的数据为准。 以下是v-model实现input 和 textarea 输入框双向数据绑定: <input v-model="m...
2019-11-15 17:57:28
502
原创 Vue入门教程08-事件处理
一、v-on:事件监听指令: 使用 v-on 指令可以监听事件: <template> <div id="hello"> <button v-on:click="sayHello($event,'Jay')">Hello</button> </div> </template> <script> ...
2019-11-15 17:11:56
418
原创 Vue入门教程07-Class和Style样式绑定
一、class属性绑定 1、单样式使用: 使用 v-bind:class 可以为元素设置一个样式: <template> <div id="hello"> <div v-bind:class="{ class1: use }"></div> </div> </template> <script> ...
2019-11-15 15:58:42
523
原创 Vue入门教程06-侦听器
一、watch侦听属性 通过 watch 来响应数据的变化,下面实现一个港币-人民币兑换的功能: <template> <div id="hello"> <p>人民币/港币换算</p> <p>人民币: <input type = "text" v-model = "rmb"></p> &...
2019-11-15 15:15:30
498
原创 Vue入门教程05-计算属性
一、计算属性 计算属性使用computed关键词,主要用于处理一些复杂逻辑,比如使用以下方式在模板中实现字符反转的逻辑时,模板显得比较混乱: <div id="hello"> {{ msg.split('').reverse().join('') }} </div> 在这里改用计算属性实现: <template> <div id="h...
2019-11-15 11:43:49
433
原创 关于“中台唱衰论”的一些个人看法
1、什么是中台 “中台”是近年来IT界兴起的一个技术概念,是区别于“前端”、“后台”的一个延伸方向。如果有时间,建议大家阅读《阿里巴巴中台战略思想与架构实战》一书。 2、谁在唱衰中台 我无意间看到一篇类似中台末路论之类的文章,作者大体上列举了实现中台过程中的技术、业务、运营等方面存在的问题,然后给出他自己的结论:IT界不要胡乱跟风、保持理性、中台末路之类的。 3、关于中台 可能是我孤陋寡闻,因为我...
2019-11-15 10:35:34
692
原创 Vue入门教程04-循坏语句的渲染
1、v-for列表渲染: v-for 指令循坏的语法格式: 【item in items】 或者使用of代替in ; v-for 可以将数组渲染到一个列表中,如下: <template> <div class="hello"> <ol> <!-- books是定义好的数组,book是数组内单个对象的别名 --> &...
2019-11-14 11:10:23
470
原创 Vue入门教程03-条件语句的渲染
基本所有的编程语言都有条件判断语句(如果你发现哪门编程语言没有,请联系我领鸡腿:594218572); 1、v-if v-if可以独立使用,它根据use值(true 或 false )来决定是否插入 p 元素: <p v-if="use">The use is true!</p> 2、v-else v-else必须与v-if配合使用: <p v-if="us...
2019-11-14 09:41:34
490
原创 Vue入门教程02-模板语法
一、定义 Vue.js 使用基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定到底层的 Vue 实例对象中, 在应用状态改变时, Vue 能够重新渲染DOM元素。 二、操作 1、插值 1)文本 这是最常用的绑定方式, 使用{{…}}(双大括号)的文本插值,我们上一章节的HelloWorld显示就是这种方式: <div class="hello"> <h1&...
2019-11-13 18:41:06
520
原创 Vue入门教程01-介绍与安装
一、Vue简介 学过前端的人都懂JQuery,我们通过简单比较JQuery来认识Vuejs框架: JQuery: 使用选择器($)操作DOM对象(赋值、取值、事件绑定等),属于原生的HTML开发(数据与界面一体化)。 vue: 通过Vue对象将数据和View页面完全分离。对数据进行操作无需引用相应的DOM对象,通过Vue对象实现双向数据绑定,通过对数据的操作就可以完成对页面视图的渲染。就是MVVM...
2019-11-13 16:18:13
574
原创 谈谈程序猿的三观
价值观是指人们在认识各种具体事物的价值的基础上,形成的对事物价值的总的看法和根本观点。一方面表现为价值取向、价值追求,凝结为一定的价值目标;另一方面表现为价值尺度和准则,成为人们判断价值事物有无价值及价值大小的评价标准。一个人的价值观一旦确立,便具有相对稳定性。但就社会和群体而言 ,由于人员更替和环境的变化,社会或群体的价值观念又是不断变化着的。传统价值观念会不断地受到新价值观的挑战。对诸事物的看法和评价在心目中的主次、轻重的排列次序,构成了价值观体系。价值观和价值观体系是决定人的行为的心理基础
2019-11-12 11:38:10
2355
原创 Egret07-绘制基本图形
一、绘制矩形 通过如下代码,我们绘制了一个图形,并添加了描边,代码以及运行效果参考下图: /** * 1、创建一个shape图形对象 * 2、通过shape调用graphics返回一个Graphics对象,通过graphics对象调用绘图方法即可实现绘图功能; * 3、lineStyle(width , color)方法添加图...
2019-11-07 15:38:33
1941
原创 Egret06-容器对象的深度管理
一、深度顺序 容器有一个深度的概念,用来管理其内子对象的展示次序,深度值就等于拥有的子对象个数。如下图,英雄头顶的数字就是其深度次序,目前容器深度是4。 Egret中容器的深度都是从0开始的,第一个加入到容器中的对象深度值为0,显示在最底层。当添加第二个时,深度值为1,依次类推。 二、添加/删除指定深度的对象 我们使用addChild( )为容器添加对象时,会默认累加对象的深度次序。如果我们添加...
2019-11-07 09:33:06
1838
原创 Egret05-容器中的对象操作
一、变换操作 1、锚点的操作 锚点,可以理解成对象坐标位置的参考点, 每个显示对象都包含一个锚点,默认在对象的左上角位置。 为了做对比,我们用代码画了4个正方形,两个黄色的正方形设置X轴锚点位置=30,粉红色的正方形不设置X轴锚点,如下: /**** 黄色正方形shape1、shape2分别旋转10,30度,且X轴锚点位置都修改为30 */ var shape1:e...
2019-11-06 17:35:40
543
原创 Egret01-WeChatGame开发指南
Egret-01WeChatGame开发指南Egret微信小游戏开发开发环境准备创建并运行小游戏祝大家HelloWord愉快! Egret微信小游戏开发 需要下载Egret、微信开发者工具等软件,具体参考下文: 开发环境准备 安装Egret Launcher; 打开Egret Launcher,在“工具”界面继续安装主要的开发工具Egret Wing; 准备最新版微信开发者工具; 创建并运行小...
2019-11-04 12:03:36
645
原创 程序之外:由电影《少年的你》揭露的bug
由电影《少年的你》揭露的bug说在前面的话少年的你谁之过这是什么bug我们都是社会建设者 说在前面的话 大家好! 程序猿该有的生活不只是思考机器,还应该思考香蕉和美好的生活,Thinking in Java ,Thinking in Life. 少年的你 电影《少年的你》由周冬雨、易烊千玺主演。影片讲述在高考前夕,因校园欺凌事件引发的一场意外,最终改变了涉事少年的命运的故事。 影片开场是一个高中...
2019-11-03 00:12:07
720
原创 Three.js相机对象(正投影OrthographicCamera、透视投影PerspectiveCamera)
Three.js相机对象(正投影OrthographicCamera、透视投影PerspectiveCamera) Three.js相机对象(正投影OrthographicCamera、透视投影PerspectiveCamera),针对不同应用的三维场景需要使用不同的投影方式,比如机械、工业设计领域常常采用正投影(平行投影), 游戏场景往往采用透视投影(中心投影)。为了完成三维场景不同的投影方式,...
2019-10-28 17:39:08
1333
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅