摘要:
今天需要做一个功能,倒计时5s关闭页面,或者直接点击按钮直接关闭页面。开始以为是一个很简单的功能,做的时候还是遇到问题了。 1.1 关闭页面的方法 问题是这样的:开始用的 window.close()方法关闭页面,在IE中测试没有问题。 到了谷歌发现页面并没有关闭,F12打开提示:Scripts m 阅读全文
摘要:
1. 单一职责原则 定义:就一个类而言,应该仅有一个引起他变化的原因。 如果一个类的职责太多,就等于把这些职责耦合到一起。一个职责的变化,可能会消弱或抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到意想不到的破坏。 软件设计真正要做的许多内容就是发现职责并把职责分离 阅读全文
摘要:
1.1 需求 设计一个商场打折计费的软件,可以实现打折,满300送100等优惠功能。 1.2 类图 1.3 实现 我们先把4个计算的类写出来。 View Code 在写负责创建对象和调用的CashCoxt类 View Code 最后调用的代码: View Code 1.4 总结 我们客户端的代码只用 阅读全文
摘要:
1.1 定义 为其他对象提供一种代理,以控制这个对象的访问。 其实就是两个类实现一个接口或抽象类,在A类中实例化B类的对象,那么A类的就能代理B类实现接口的方法。 1.2 类图 Porxy代理类中声明了RealSubject类的实例,在需要调用他们都实现的方法时,调用RealSubject实例的方法 阅读全文
摘要:
1.1 定义 动态的给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更加灵活。 1.2 类图 1.3 代码 View Code 调用 View Code 1.4 总结 装饰模式就是为已有功能动态地添加更多功能的一种方式。 当我们系统需要更新功能时,给原有的类添加装饰模式,就可以给主类 阅读全文
摘要:
1.原型模式用处: ·用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 ps:当我们需要创建大量相同对象的时候,就可以用原型模式大批量复制对象。和现实生活中 的复印机相似,通过一个原型(模板)批量复制相同的对象; 2.深复制与潜复制的区别: 复制需要用到MemberwiseClone 阅读全文
摘要:
1.1 定义 简单工厂增加计算功能需要增加case语句修改工厂类。违背了开放封闭原则。 工厂方法模式:定义一个创建对象的接口,让子类决定实例化哪一个类。 1.2 类图 工厂模式:抽象出一个工厂父类,每一个功能做为一个子工厂。这时候要增加一个计算功能,要在计算类增加一个功能类,并且增加对应的工厂类。这 阅读全文
摘要:
1.1 定义 提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类。 1.2 类图 1.3 代码实现 View Code 调用: View Code 配置文件: <appSettings> <add key="db" value="SqlServer"/> <!--<add key=" 阅读全文
摘要:
1.1 定义 定义了一种一对多的依赖关系,让多个观察者同时监听一个对象,但这个对象发生变化时,会通知所有观察者对象,使他们能够更新自己。 1.2 类图 1.3 代码 View Code 调用: View Code 1.4 总结 我们定义观察者和通知者和通知者两个抽象父类都是为了面向抽象编程,以后再增 阅读全文
摘要:
数据库和C#中均为可空类型。 这时候直接给字段赋值为null parameters[9].Value = null ; 执行的时候报错了,一大堆,总之说它少了一个参数。 用sql server profiler 工具查看执行代码 如下图: 这时候才找到原因: C#中赋值为null的字段到了数据库执行 阅读全文
摘要:
1.1 服务端返回给前端 返回的数据都放入对象中(根据需求:单个对象,集合,键值对),然后JSON序列化返回给前端。这里可以引用JSON.NET 库,也可以用.NET自带的类库: JavaScriptSerializer().Serialize(obj) ; JSON序列化后的结果是一个键和值都用双 阅读全文
摘要:
整理一下js面向对象中的封装和继承。 1.封装 js中封装有很多种实现方式,这里列出常用的几种。 1.1 原始模式生成对象 直接将我们的成员写入对象中,用函数返回。 缺点:很难看出是一个模式出来的实例。 代码: function Stu(name, score) { return { name: n 阅读全文
摘要:
2. 完善地图 我们的地图中有空地,墙,钢,草丛,水,总部等障碍物。 我们可以把这些全部设计为对象。 2.1 创建障碍物对象群 对象群保存各种地图上的对象,我们通过对象的属性来判断对象是否可以被穿过或被攻击。 Barrier.js: View Code View Code 2.2 写入地图的数据。 阅读全文
摘要:
PS:这个坦克大战是在网上下的一段源码之后,自己进行的重写。 写这个的目的是为了巩固自己这段时间对js的学习。整理到博客上,算是对自己近端时间学习js的一个整理。 同时也希望可以帮助到学习js的园友。由于自己也是刚学js不久,所以难免出现错误。如果发现希望给予指正。 这个教程适合熟悉js基本语法和面 阅读全文
摘要:
我们现在还差一个重要的功能,没错,敌人坦克的创建以及子弹击中敌人坦克时的碰撞检测功能。 5. 创建敌人坦克完成炮弹碰撞检测 5.1 创建敌人坦克对象 敌人坦克和玩家坦克一样,同样继承自我们的坦克对象。所以我们在Tank.js中写入以下代码: View Code 然后在我们的游戏装载对象初始化游戏时创 阅读全文
摘要:
之前,我们完成了坦克的移动和地图的绘制,这次我们来完成碰撞检测和炮弹的发射。 上代码前来张最新的类图: 3. 碰撞检测 前面我们已经完成了坦克的移动和地图的绘制,下面我们开始写碰撞检测。 3.1 创建碰撞检测对象 我们创建一个对象来做碰撞检测,由于碰撞检测都是在对象移动的时候进行的所以我们让Move 阅读全文
摘要:
如果想成为一名更优秀的软件设计师,了解优秀软件设计的演变过程比学习优秀设计本身更有价值。 1.1 面向对象的好处 通过封装、继承多态把程序的耦合度降低,使用设计模式使得程序更加灵活,容易修改,易于复用。 1.2 类图 1.3 代码 几个运算类; View Code 工厂代码: View Code 调 阅读全文
摘要:
1、单一文件创建unity3d using UnityEngine; using UnityEditor; using System.IO; public class BuildAssetBundlesFromDirectory { [@MenuItem("Asset/Build AssetBund 阅读全文
摘要:
第一个也是最容易区分的一点就是声明变量和方法。JavaScript的脚本: 1. private var cubeTransform; 在C#中,同样的代码则会是: 1. private Transform cubeTransform; 这对方法同样适用,在C#中,一个方法什么值也没有返回,那么他的 阅读全文
摘要:
在一些Unity脚本的开始经常可以看到 #pragma strict,#pragma downcast、#pragma implicit指令,而有的Unity脚本则没有这些指令,那这些指令有什么作用呢?#pragma strict,此指令的含义是强制输入,也就是我们在声明变量时,需要精确的声明变量是 阅读全文