文档库 最新最全的文档下载
当前位置:文档库 › MVC CodeFirst 学习心得

MVC CodeFirst 学习心得

MVC CodeFirst 学习心得
MVC CodeFirst 学习心得

MVC CodeFirst 学习心得

这几天都在学习MVC 的Code First, 在国内的网站上找到案例不是很满意,于是就跑到微软官网看CodeFirst 方面的文章,我那个去啊,看着英文头都大了,还好咱有google翻译,一遍揣测,一边翻译。经过两天的艰苦奋斗,算是对CodeFirst 小有了解。

MVC 下有3种开发模式:DataBase First,Model First以及Code First。

DataBase First :从数据库自动生成的模型文件,基于xml格式,包括概念模型和存储模型以及两者之间的映射。

Model First:从数据库生成模型或者是空模型中,添加实体->添加属性->根据模型生成数据库->把生成的数据库脚本执行。

CodeFirst:指的是先用C#/https://www.wendangku.net/doc/335464530.html, 创建的类定义模型,然后根据模型映射到现有的数据库或生成数据库结构。

另外CodeFirst 支持Data Annotations [相当于数据注释] 以及 Fluent API;

下面简单的介绍下EF 支持的Annotations类型

11、KeyAttribute

2

32、StringLengthAttribute

4

53、MaxLengthAttribute

6

74、ConcurrencyCheckAttribute

8

95、RequiredAttribute

10

116、TimestampAttribute

12

137、ComplexTypeAttribute

14

158、ColumnAttribute Placed on a property to specify the column name, ordinal & data type

16

179、TableAttribute Placed on a class to specify the table name and schema 18

1910、InversePropertyAttribute Placed on a navigation property to specify the property that represents the other end of a relationship

20

2111、ForeignKeyAttribute Placed on a navigation property to specify the property that represents the foreign key of the relationship

22

2312、DatabaseGeneratedAttribute Placed on a property to specify how the database generates a value for the property (Identity, Computed or None)

24

2513、NotMappedAttribute Placed on a property or class to exclude it from the database

接下来正式的介绍CodeFirst 案例

1、新建solution->更名为CodeFirstDemo

2、在solution下建立MVC Application

3、在Models 文件夹下建立一个类,命名为BlogClasses,移除BlogClasses 类,并在里面添加Blog,Post,Comment类

1public class Blog

2 {

3public int Id { get; set; }

4 [Required]

5public string Title { get; set; }

6public string BloggerName { get; set; }

7public string Test { get; set; }

8public virtual ICollection Posts { get; set; } 9 }

10

11public class Post

12 {

13public int Id { get; set; }

14public string Title { get; set; }

15public DateTime DateCreated { get; set; }

16public string Content { get; set; }

17public int BlogId { get; set; }

18public ICollection Comtents { get; set; } 19 }

20

21public class Comment

22 {

23public int Id { get; set; }

24public DateTime DateCreated { get; set; }

25public string Content { get; set; }

26public int PostId { get; set; }

27public Post Post { get; set; }

28 }

29

30public class Supplier

31 {

32 [Key]

33public string SupplierCode { get; set; }

34public string Name { get; set; }

35 }

注意:代码里面的Data Annotations 需要引入命名空间https://www.wendangku.net/doc/335464530.html,ponentModel.DataAnnotations;

紧接着在Models 里面建立类BlogContext

1public class BlogContext : DbContext

2 {

3public DbSet Blogs { get; set; }

4public DbSet Posts { get; set; }

5public DbSet Comments { get; set; }

6public DbSet Suppliers { get; set; }

7

8public class BlogContextInitializer : DropCreateDatabaseIfModelChanges

9 {

10protected override void Seed(BlogContext context)

11 {

12base.Seed(context);

13 }

14 }

15

16protected override void OnModelCreating(DbModelBuilder modelBuilder)

17 {

18 modelBuilder.Entity().Property(s => s.Title).IsRequired(); 19base.OnModelCreating(modelBuilder);

20 }

21 }

这个类派生于DbContext ,这个比较关键,模型生成数据库主要就是依靠此类。里面有类中类。

这样可以随意更改模型,生成相应的数据表和字段。实现这个的前提是:需要在主程序入口上加上如下一句代码就万事ok了

System.Data.Entity.Database.SetInitializer(new

BlogContext.BlogContextInitializer());

之后就是在Controller里面写逻辑代码了

创建一个Controller命名为BlogController,从简考虑,里面只有添加、删除,修改等功能。

1public class BlogController : Controller

2 {

3//

4//GET: /Blog/

5

6public ActionResult Index()

7 {

8using (var db = new BlogContext())

9 {

10return View(db.Blogs.ToList());

11 }

12 }

13

14public ActionResult Create()

15 {

16return View();

17 }

18

19 [HttpPost]

20public ActionResult Create(Blog blog)

21 {

22if (ModelState.IsValid)

23 {

24using (var db = new BlogContext())

25 {

26 db.Blogs.Add(blog);

27 db.SaveChanges();

28 }

29return RedirectToAction("Index");

30 }

31else

32 {

33 ModelState.AddModelError("","内容不能为空!");

34 }

35return View();

36 }

37 }

最后生成View ,浏览就行了。

Html5 Web App 手机跨平台开发笔记

Html5 Web App 手机跨平台开发笔记 APP 开发平台包括Android 平台开发,Mac os X 平台开发以及Windows Phone 7平台开发。开发的程序都只能在各自手机系统上运行,如果开发出一种程序,能再以上任何系统上运行,那是多么美好的事情。而Html5 Mobile Web App就是其中一种跨平台方法。下面是相关知识的介绍 1.背景 HTML5是HTML的最新标准,HTML5的草案已经于2008年发布,目前W 3 C(万维网联盟)正在对此进行进一步完善。对许多人来说,早该进行这种改进了。十多年来,HTML 一直没有进行真正的升级,上一次正式获得W3C推荐(即Web标准制定过程的最终阶段)的标准语言还是2001年的XHTML1.1。此后的这些年,Web开发人员要求升级的呼声越来越高。因为HTML和XHTML标准已力不从心,它们以文档为中心的理念无法有效地满足现代Web应用的需要。 2.HTML5 2.1什么是HTML? HTML(Hypertext Markup Language)是超文本标记语言的英文缩写,这是一种标记语言,不需要进行编译,直接由浏览器执行。HTML文件是一个文本文件,包含了一些HTML元素、标签等。目前HTML语言的标准是由W3C(World Wide Web Consortium)负责制定的。依照规则,无论是何种浏览器,对于相同的HTML代码,应当展现给用户相同的效果。 2.2什么是HTML5? HTML5是下一代Web语言,HTML5是在现在的HTML基础上提出了许多新的特性,例如嵌入音频、视频和图片的函数、客户端存储数据、交互式文档等,通过制定如何处理所有HTML 元素以及如何从错误中恢复的精确规则,HTML5进一步增强了互动性,并有效减少了开发成本,并将引领下一个web实现类似的桌面应用体验。它的出现消除internet程序对flash,Sliverlight,javaFX等一类浏览器插件的依赖。 从感性的角度来看,HTML5技术的渲染过程主要是由浏览器、内嵌HTML5解析器的应用程序(如PhoneGap)、支持书签打开方式的应用程序又或者是移动手机产品(iPhone和iPad)进行的。这种技术的好处就是能重用现有的网页设计。 从理性的角度来看,HTML5 技术就是使用JavaScript引擎直接控制本地功能,改变移动设备上的浏览器组件。而HTML5应用上的表现问题更多是由HTML/CSS渲染技术控制的,而不是由JavaScript解析生成的。如果使用正确,HTML5技术无疑可以给予你大量新增的表现效果

Android开发实战中常用安卓开发框架

Android是基于Linux平台的开源移动操作系统,主要适用于移动设备,如智能手机和平板电脑(当然现在已经适用车控应用了),由Google公司和开放手机联盟领导及开发。不完全统计,Android平台手机的全球市场份额已经达到80%,本文介绍了android开发者实战中最喜欢使用的几种Android开发框架。 1) Corona SDK Corona SDK是一个跨平台技术的工具,它利用Lua开发脚本,从一个特定的移动操作系统开发应用。应用程序可以在模拟器中测试,然后编译为Android的本机代码。同时Corona SDK 还支持与Map、Facebook、OpenFient、GameCenter的集成。然而在编译项目时,程序员需要把代码上传到Corona的服务器上去编译,不能在本地直接编译。 2) Phonegap Phonegap是一款开源的开发框架,旨在让开发者使用HTML、Java、CSS等Web APIs开发跨平台的移动应用程序。它需要特定平台提供的附加软件,例如iPhone的iPhone SDK,Android的Android SDK等,也可以和DW5.5及以上版本配套开发。使用PhoneGap比为每个平台分别建立应用程序稍好一些,因为虽然基本代码是一样的,但是程序员仍然需要为每个平台分别编译应用程序。 3) Xamarin Xamarin 始创于2011年,旨在使移动开发变得难以置信地迅捷和简单。Xamarin的产品简化了针对多种平台的应用开发,包括iOS、Android、Windows Phone和Mac App。Xamarin 由许多著名的开源社区开发者创立和参与,而且也是Mono项目的主导者——C#与?NET框架的开源、跨平台实现。 而这其中Xamarin Studio就是一个用C#语言开发跨平台应用的集成开发环境,它和iOS 以及Android SDK紧密整合。Xamarin Studio提供了很多现代开发所需功能,包括代码完成、调试器、打包和发布应用(支持通过TestFlight发布应用程序)。对于Android,Xamarin还包含了自己的UI生成器(对于iOS,则使用苹果Xcode的UI生成器),此外还集成了Git和Subversion。Android开发者可以使用Xamarin Studio在模拟器和真机上对移动应用进行测试和bug调试。 4) Sencha Touch 2 Sencha Touch是由Sencha公司开发的移动Web应用开发框架,用以提升主流移动设备在浏览器上的触碰操作,增强用户体验。该框架以久负盛名的Ext JS富客户端框架为基础,并支持最新的HTML5及CSS3标准,与流行的Apple iOS和Andriod设备兼容。一方面,它以Webkit浏览器引擎为基础,提供了出色的性能和用户体验;另一方面,它提供了基于GPL V3许可的开源版本和详尽的API文档,体现了良好的开放性和易用性。因此,该框架可帮助移动应用开发人员提升开发效率,从而创造出更多富有创意的移动应用。 5) Appcelerator Appcelerator是一个构建基于SOA的RIA应用的全集成平台,用来构建富应用、交互式的网站和应用程序。Appcelerator应用的语言——Web Expression Language,是一种对HTML 的扩展,它采用直观、声明的方法来构建动态的web应用。

软件设计师23种设计模式总结

创建型结构型行为型 类Factory Method Adapter In terpreter Template Method 对象 Abstract Factory Builder Prototype Si ngleto n Apapter(对象) Bridge Composite Decorator Fa?ade Flyweight Proxy Chain of Resp on sibility Comma nd Iterator Mediator Meme nto Observer State Strategy Visitor (抽象工厂) 提供一个创建一系列相关或互相依赖对象的接口,而无须制定它们具体的类。 图10-25抽象工厂模式结构图 Abstract Factory 抽象工厂 class Program { static void Main(string[] args) { AbstractFactory factory1 = new Con creteFactory1(); Clie nt c1 = new Clie nt(factory1); c1.Ru n(); AbstractFactory factory2 = new Con creteFactory2(); Clie nt c2 = new Clie nt(factory2); c2.Ru n(); Co nsole.Read(); abstract class AbstractFactory { public abstract AbstractProductA CreateProductA(); public abstract AbstractProductB

23种设计模式趣味讲解

23种设计模式趣味讲解 对设计模式很有意思的诠释,呵呵,原作者不详。 创立型模式 1、FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,固然口味有所不同,但不管你带MM往麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是生产鸡翅的Factory 工厂模式:客户类和工厂类离开。花费者任何时候需要某种产品,只需向工厂恳求即可。花费者无须修正就可以接纳新产品。毛病是当产品修正时,工厂类也要做相应的修正。如:如何创立及如何向客户端供给。 2、BUILDER—MM最爱听的就是“我爱你”这句话了,见到不同处所的MM,要能够用她们的方言跟她说这句话哦,我有一个多种语言翻译机,上面每种语言都有一个按键,见到MM 我只要按对应的键,它就能够用相应的语言说出“我爱你”这句话了,国外的MM也可以轻松搞掂,这就是我的“我爱你”builder。(这必定比美军在伊拉克用的翻译机好卖) 建造模式:将产品的内部表象和产品的天生过程分割开来,从而使一个建造过程天生具有不同的内部表象的产品对象。建造模式使得产品内部表象可以独立的变更,客户不必知道产品内部组成的细节。建造模式可以强迫履行一种分步骤进行的建造过程。 3、FACTORY METHOD—请MM往麦当劳吃汉堡,不同的MM有不同的口味,要每个都记住是一件烦人的事情,我一般采用Factory Method模式,带着MM到服务员那儿,说“要一个汉堡”,具体要什么样的汉堡呢,让MM直接跟服务员说就行了。 工厂方法模式:核心工厂类不再负责所有产品的创立,而是将具体创立的工作交给子类往做,成为一个抽象工厂角色,仅负责给出具体工厂类必须实现的串口,而不接触哪一个产品类应当被实例化这种细节。 4、PROTOTYPE—跟MM用QQ聊天,必定要说些深情的话语了,我搜集了好多肉麻的情话,需要时只要copy出来放到QQ里面就行了,这就是我的情话prototype了。(100块钱一份,你要不要) 原始模型模式:通过给出一个原型对象来指明所要创立的对象的类型,然后用复制这个原型对象的方法创立出更多同类型的对象。原始模型模式容许动态的增加或减少产品类,产品类不需要非得有任何事先断定的等级结构,原始模型模式实用于任何的等级结构。毛病是每一个类都必须配备一个克隆方法。 5、SINGLETON—俺有6个美丽的老婆,她们的老公都是我,我就是我们家里的老公Sigleton,

移动端混合开发框架分析

移动端架构分析 目录 移动端架构分析 (1) 1移动端常见开发模式 (5) 1.1纯N ATIVE A PP (5) 1.1.1主流框架 (5) 1.1.2优势 (6) 1.1.3劣势 (6) 1.1.4主流应用 (6) 1.2H YBRID A PP (6) 1.2.1多View混合型 (7) 1.2.1.1主流框架 (7) 1.2.1.2优势 (7) 1.2.1.3劣势 (7) 1.2.1.4主流应用 (7) 1.2.1.5发展趋势 (7) 1.2.2Web主体型 (8) 1.2.2.1主流框架平台 (8) 1.2.2.2优势 (9) 1.2.2.3劣势 (9)

1.2.2.5发展趋势 (10) 1.2.3单View混合型 (10) 1.2.3.1主流框架 (10) 1.2.3.2优势 (10) 1.2.3.3劣势 (10) 1.2.3.4主流应用 (10) 1.3W EB A PP (10) 1.3.1主流框架 (11) 1.3.2优势 (11) 1.3.3劣势 (11) 1.3.4主流应用 (11) 1.4四种主要开发模式对比 (11) 2移动前端主流框架分析 (12) 2.1W EB和N ATIVE混合 (12) 2.1.1WindVane+Hybrid+Native (12) 2.1.1.1简介 (12) 2.1.1.2框架实现 (12) 2.1.1.3架构图 (13) 2.1.2AppCan (13) 2.1.2.1简介 (13) 2.1.2.2框架实现 (13)

2.2跨平台原生应用 (15) 2.2.1BeeFramework (15) 2.2.1.1简介 (15) 2.2.1.2框架实现 (15) 2.2.1.3架构图 (16) 2.2.2Native Script (17) 2.2.2.1简介 (17) 2.2.2.2框架实现 (17) 2.2.2.3结构图 (18) 2.2.3React Native (18) 2.2.3.1简介 (18) 2.2.3.2框架实现 (18) 2.2.3.3架构图 (20) 3数梦移动端开发框架选择..................................... 错误!未定义书签。 3.1开发模式选择 (20) 3.1.1为什么不选择Native (20) 3.1.2玩什么不选择WebApp或Web主体型Hybird (21) 3.1.3选择多页面混合型Hybird (21) 3.2选择类W IND V ANE框架 (21) 3.2.1玩什么不选择React Native (21) 3.2.2玩什么选择类WindVane框架 (21)

三种手机app开发方式优缺点分析 (1)

三种手机app开发方式优缺点分析 金义飞 AngularJS处于ionic移动app开发框架之下进行开发手机app,所以对比java,ionic,react三者开发app的优劣。下表分析上述三种开发方式 java ionic React 跨平台特性用原生java开发,,无法 跨平台,只可开发安卓 app 一次开发,ios和android均可运行,但是 如果涉及到系统级API调用以及项目配 置则需要自己手动编写cordova插件的 方式达到效果。 统一js进行开发使用jsx语法确实 能做到各端开发,但是需要针对iOS 和android开发两套代码。 开发方式Java语言使用html5 + angularjs,与网页开发类 似,代码只需要写一次,就可以达到跨 平台效果普通UI全程js开发,部分情况下需要使用与java混合的方式,没有统一的UI组件,ios组件较多,android 组件较少,各自编写js文件的情况较多,简单空间和逻辑层可共用,基本上iOS和android是两套代码,可用flexbox布局。 功能支持完全能实现编写cordova插件,则能达到全部java 支持原生能完成的功能。android高级组件可能需要自己实现,系统级的功能可通过安装第三方插件或者与native混编的方式实现,基本上功能能完全实现 性能对比开发者水平很重要安卓端性能较差,ios效果不错基本接近原生性能 开源库多 少 少 优劣总结 java: 优势: 1,最好的体验以及功能实现。 2,庞大的开源库供使用,大部分算法可以百度到。 3,完善成熟的开发文档以及demo。 劣势: 1,无法做到跨平台。 ionic: 优势: ios 和android 基本上可以共用代码,纯web思维,简单方便,一次编码,到处运行,如果熟悉web 开发,则开发难度较低。文档很全,系统级支持封装较好,所有UI组件都是有html模拟,可以统一使用。可实现在线更新允许加载动态加载web js。 劣势: 占用内存高一些,不适合做游戏类型app,web技术无法解决一切问题,对于比较耗性能的地方无法利用java的思维实现优势互补,如高体验的交互,动画等。

二十三种设计模式类图

二十三种设计模式类图 0 引言 谈到设计模式,绝对应该一起来说说重构。重构给我们带来了什么?除了作为对遗留代码的改进的方法,另一大意义在于,可以让我们在写程序的时候可以不需事先考虑太多的代码组织问题,当然这其中也包括了应用模式的问题。尽管大多数开发者都已经养成了写代码前先从设计开始的习惯,但是,这种程度的设计,涉及到到大局、到总体架构、到主要的模块划分我觉得就够了。换句话说,这时就能写代码了。这就得益于重构的思想了。如果没有重构的思想,有希望获得非常高质量的代码,我们就不得不在开始写代码前考虑更多其实并非非常稳定的代码组织及设计模式的应用问题,那开发效率当然就大打折扣了。在重构和设计模式的合理应用之下,我们可以相对较早的开始写代码,并在功能尽早实现的同时,不断地通过重构和模式来改善我们的代码质量。所以,下面的章节中,在谈模式的同时,我也会谈谈关于常用的这些模式的重构成本的理解。重构成本越高意味着,在遇到类似的问题情形的时候,我们更应该提前考虑应用对应的设计模式,而重构成本比较低则说明,类似的情形下,完全可以先怎么方便,怎么快怎么写,哪怕代码不是很优雅也没关系,回头再重构也很容易。 1 创建型 1.1FactoryMethod 思想:Factory Method的主要思想是使一个类的实例化延迟到其子类。 场景:典型的应用场景如:在某个系统开发的较早阶段,有某些类的实例化过程,实例化方式可能还不是很确定,或者实际实例化的对象(可能是需要对象的某个子类中的一个)不确定,或者比较容易变化。此时,如果直接将实例化过程写在某个函数中,那么一般就是if-else或select-case代码。如果,候选项的数目较少、类型基本确定,那么这样的if-else 还是可以接受的,一旦情形变得复杂、不确定性增加,更甚至包含这个构造过程的函数所

Android移动应用架构设计

Android 移动应用架构设计

随着新技术的引入,及编写原生Android 代码的技能不断提升,我们开始思索如何去解锁移动应用新架构,也就是Growth 5.0。 我们尝试使用了Kotlin + React Native + Dore + WebView 搭建了一个简单的Android 移动应用模板。为了尝试解决Growth 3.0+ 出现的一系列问题:启动速度慢、架构复杂等等的问题。 作为Architecture 练习计划的一部分,我们将采用规范一些的叙述方式来展开。 1.业务架构 2.技术远景 3.方案对比 4.架构设计方案 5.持续集成设计 6.测试策略 7.架构实施 即下图:

技术架构设计之路 业务架构 技术是为了解决业务的问题而产生的。 脱离了业务,技术就没有了存在的前提。脱离了业务的架构不叫“架构”,而叫刷流氓,又或者是画大饼。业务由于其本身拥有其特定的技术场景,往往是对技术决策影响最大的部分。 因此,开始之前让我们先了解一些业务,这里以Growth 为例。 Growth 的价值定位是:带你成为顶尖开发者。

复杂一点的说明就是:Growth提供编程学习服务使用Web开发路线帮助新手Web 程序员解决Web 学习路径问题。 让我们来看一下,更复杂一些的说明(电梯演讲): 在原有的业务架构下,我们拥有Growth、探索、社区、练习四个核心业务,以及用户中心的功能。 o Growth(首页),即带有详细介绍的Web 应用的生命周期,能帮助开发者理解Web 应用的构建流程。

o探索,以辅助开发者了解Web 应用方方面面的知识,如常用工具、练手项目、技能测验、读书路线等等。 o练习,通过这些练习项目,来帮助开发者更好的掌握知识。 o社区,一个简易的论坛。 o用户中心,一些用户的收藏数据、应用相关的设置等等。 这就是业务上的主要架构,接下来让我们看看技术上的事务。 技术远景 远景,即想象中未来的远大景象。技术远景,即想象中未来的技术方面的远大景象。 在上一节中,我们介绍的是项目的业务远景。而作为一个技术人员,在一个项目里,我们也已经创建自己的技术远景。一来,我们可以创建出可持续演进的架构;二来,可以满足个人的技能需求。 以Growth 为例,我的最基本的技术需求是:提升自身的能力。然后才是一个跨平台的技术设施——减少构建时间。 从Growth 1.0、Growth 2.0 采用的Ionic,到Growth 3.0 采用的React Native,它都优先采用新的技术来帮助自己成长,并使用了跨平台的移动应用开发框架。而这几个不同的版本里,也拥有其对应的不同技术问题 o Growth 1.0 主要是Angular 1.x 的跳崖式升级,使之变成不可维护的系统。 o Growth 2.0 则是Angular 2.x 那庞大的构建体积,带来了启动时间慢的问题。 o Growth 3.0 则是,React Native 生成的 index.android.bundle 文件有3.1M,这个体积相当的大,以至于即使在高通的骁龙835 处理器上,也需要4~5 秒的打开时间。

23种设计模式的通俗理解

23种设计模式的通俗理解【转】 1、FACTORY 工厂方法 追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是生产鸡翅的Factory 工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的修改。如:如何创建及如何向客户端提供。 2、BUILDER 抽象工厂 MM最爱听的就是“我爱你”这句话了,见到不同地方的MM,要能够用她们的方言跟她说这句话哦,我有一个多种语言翻译机,上面每种语言都有一个按键,见到MM我只要按对应的键,它就能够用相应的语言说出“我爱你”这句话了,国外的MM也可以轻松搞掂,这就是我的“我爱 你”builder。(这一定比美军在伊拉克用的翻译机好卖)建造模式:将产品的内部表象和产品的生成过程分割开来,从而使一个建造过程生成具有不同的内部表象的产品对象。建造模式使得产品内部表象可以独立的变化,客户不必知道产品内部组成的细节。建造模式可以强制实行一种分步骤进行的建造过程。 3、FACTORY METHOD 建造者模式 请MM去麦当劳吃汉堡,不同的MM有不同的口味,要每个都记住是一件烦人的事情,我一般采用Factory Method模式,带着MM到服务员那儿,说“要一个汉堡”,具体要什么样的汉堡呢,让MM直接跟服务员说就行了。工厂方法模式:核心工厂类不再负责所有产品的创建,而是将具体创建的工作交给子类去做,成为一个抽象工厂角色,仅负责给出具体工厂类必须实现的接口,而不接触哪一个产品类应当被实例化这种细节。 4、PROTOTYPE 原型模式 跟MM用QQ聊天,一定要说些深情的话语了,我搜集了好多肉麻的情话,需要时只要copy出来放到QQ里面就行了,这就是我的情话prototype了。(100块钱一份,你要不要)原始模型模式:通过给出一个原型对象来指明所要创建的对象的类型,然后用复制这个原型对象的方法创建出更多同类型的对象。原始模型模式允许动态的增加或减少产品类,产品类不需要非得有任何事先确定的等级结构,原始模型模式适用于任何的等级结构。缺点是每一个类都必须配备一个克隆方法。 5、SINGLETON 单态模式 俺有6个漂亮的老婆,她们的老公都是我,我就是我们家里的老公Sigleton,她们只要说道“老公”,都是指的同一个人,那就是我(刚才做了个梦啦,哪有这么好的事) 单例模式:单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例单例模式。单例模式只应在有真正的“单一实例”的需求时才可使用。[b:9ceca65206]结构型模式[/b:9ceca65206] 6、ADAPTER 适配器模式 在朋友聚会上碰到了一个美女Sarah,从香港来的,可我不会说粤语,她不会说普通话,只好求助于我的朋友kent了,他作为我和Sarah之间的Adapter,让我和Sarah可以相互交谈了(也不知道他会不会耍我) 适配器(变压器)模式:把一个类的接口变换成客户端所期待的另一种接口,

关于23种设计模式的有趣见解

创建型模式 1、FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM 去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是生产鸡翅的Factory 工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的修改。如:如何创建及如何向客户端提供。 2、BUILDER—MM最爱听的就是“我爱你”这句话了,见到不同地方的MM,要能够用她们的方言跟她说这句话哦,我有一个多种语言翻译机,上面每种语言都有一个按键,见到MM我只要按对应的键,它就能够用相应的语言说出“我爱你”这句话了,国外的MM也可以轻松搞掂,这就是我的“我爱你”builder。(这一定比美军在伊拉克用的翻译机好卖) 建造模式:将产品的部表象和产品的生成过程分割开来,从而使一个建造过程生成具有不同的部表象的产品对象。建造模式使得产品部表象可以独立的变化,客户不必知道产品部组成的细节。建

造模式可以强制实行一种分步骤进行的建造过程。 3、FACTORY METHOD—请MM去麦当劳吃汉堡,不同的MM有不同的口味,要每个都记住是一件烦人的事情,我一般采用Factory Method模式,带着MM到服务员那儿,说“要一个汉堡”,具体要什么样的汉堡呢,让MM直接跟服务员说就行了。 工厂方法模式:核心工厂类不再负责所有产品的创建,而是将具体创建的工作交给子类去做,成为一个抽象工厂角色,仅负责给出具体工厂类必须实现的接口,而不接触哪一个产品类应当被实例化这种细节。 4、PROTOTYPE—跟MM用QQ聊天,一定要说些深情的话语了,我搜集了好多肉麻的情话,需要时只要copy出来放到QQ里面就行了,这就是我的情话prototype了。(100块钱一份,你要不要) 原始模型模式:通过给出一个原型对象来指明所要创建的对象的类型,然后用复制这个原型对象的方法创建出更多同类型的对象。原始模型模式允许动态的增加或减少产品类,产品类不需要非得有任何事先确定的等级结构,原始模型模式适用于任何的等级结构。缺点是每一个类都必须配备一个克隆方法。

移动应用开发框架(WADE-Mobile).

移动应用开发专题二创新周报总第172期 框架为桥,天堑变通途 ——移动应用开发框架(WADE-Mobile 参与过早期J2EE WEB开发的同事一定记忆犹新,大多数程序员都刚刚从传统的PB、Delphi等 C/S模式应用开发中转型过来,不再是单一的编程语言,也缺少统一的集成开发环境(IDE,满眼尽 是从前端(JSP、HTML、Javascript到后端(Java、HTTP、WSDL、DB数量众多、纷繁复杂的全新面孔。 混乱过一阵子后,开源和定制开发框架逐渐兴起,技术门槛高、开发效率低的糟糕境况才得以好转。 今天,移动应用开发又将我们拉回到这似曾相识的境地。云计算、移动互联网大势所趋,HTML5、CSS3 新技术闪亮齐登场。Apple iOS、Google Android、Windows Phone、OMS(中国移动OPhone、Linux(中 国联通沃Phone等平台之争,Objective-C、Java、C/C++各种语言伴随着陆。Apple xCode、Google Android Development Tools (ADT、中国移动Open Mobile System Development Tools (ODT、Microsoft Visual Studio 2008等各种开发环境跟着乱象纷呈。我们会不会再次回到混沌之初,期 待盘古重开天地呢?答案是否定的,请看下面关于《移动应用开发框架(WADE-Mobile》的详细介绍。

WADE移动应用开发框架(简称WADE-Mobile基于最新的WEB技术(HTML5、CSS3,并结合面向各 种操作系统、移动设备的专用APP壳,可广泛用于各种企业场景的移动应用开发,能够有效降低技术 门槛、提高开发效率、保证产品质量和保障信息安全。 适用场景 WADE-Mobile适用于公司内部各部门移动应用产品研发和项目实施,包括满足运营商业务支撑系 统向移动设备终端的延伸需求,以及面向更为广阔的移动互联网领域,开发公众使用的移动应用产品。 在运营商业务支撑系统方面,已知能够适用的一些需求包括:中国移动集团规范(NGBOSS-CRM3多OP 管理分册G3版工作台部分、广东移动G3版CRM手机客户端解决方案、中国移动集团公司统一积分 商城、上海移动WLAN登录、江苏电信掌上BOSS等。在移动互联网方面,可以支持的移动设备操作系 统包括:Apple iOS,开发使用Objective-C程序语言和xCode集成开发环 境;Google Android,开 发使用Java程序语言和Eclipse集成开发环境,包含Android Development Tools (ADT插件包; 中国移动Open Mobile System (OMS,程序语言和开发环境同谷歌类似,不同的是插件包为OMS Development Tools (ODT;中国联通沃PHONE,国产Linux操作系统,

三种移动APP(应用程序)开发方式比较 (2)

三种移动APP(应用程序)开发方式比较 一、名词介绍1.NativeAPPNativeAPP指的是原生程序,一般依托于操作系统,有很强的交互,是一个完整的App,可拓展性强,需要用户下载安装使用。(简单来说,原生应用是特别为某种操作系统开发的,比如iOS、Android、黑莓等等,它们是在各自的移动设备上运行的)该模式通常是由“云服务器数据+APP应用客户端”两部份构成,APP应用所有的UI元素、数据内容、逻辑框架均安装在手机终端上。原生应用程序是某一个移动平台(比如iOS或安卓)所特有的,使用相应平台支持的开发工具和语言(比如iOS平台支持Xcode和Objective-C,安卓平台支持Eclipse和Java)。原生应用程序看起来(外观)和运行起来(性能)是最佳的。 2.WebAPPWebApp指采用Html5语言写出的App,不需要下载安装。类似于现在所说的轻应用。生存在浏览器中的应用,基本上可以说是触屏版的网页应用。(Web应用本质上是为移动浏览器设计的基于Web的应用,它们是用普通Web开发语言开发的,可以在各种智能手机浏览器上运行)WebApp 开发即是一种框架型APP开发模式(HTML5APP框架开发模式),该开发具有跨平台的优势,该模式通常由“HTML5云网站+APP应用客户端”两部份构成,APP应用客户端只需安装应用的框架部份,而应用的数据则是每次打开APP的时候,去云端取数据呈现给手机用户。HTML5应用程序使用标准的Web技术,通常是HTML5、JavaScript和CSS。这种只编写一次、可到处运行的移动开发方法构建的跨平台移动应用程序可以在多个设备上 运行。虽然开发人员单单使用HTML5和JavaScript就能构建功能复杂的应用程序,但仍然存在一些重大的局限性,具体包括会话管理、安全离线存储以及访问原生设备功能(摄像头、日历和地理位置等)。

23种设计模式额形象比喻 (1)

1、FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM 爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是生产鸡翅的Factory。工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的修改。如:如何创建及如何向客户端提供。 2、BUILDER—MM最爱听的就是“我爱你”这句话了,见到不同地方的MM,要能够用她们的方言跟她说这句话哦,我有一个多种语言翻译机,上面每种语言都有一个按键,见到MM我只要按对应的键,它就能够用相应的语言说出“我爱你”这句话了,国外的MM也可以轻松搞掂,这就是我的“我爱你”builder。(这一定比美军在伊拉克用的翻译机好卖)建造模式:将产品的内部表象和产品的生成过程分割开来,从而使一个建造过程生成具有不同的内部表象的产品对象。建造模式使得产品内部表象可以独立的变化,客户不必知道产品内部组成的细节。建造模式可以强制实行一种分步骤进行的建造过程。 3、FACTORY METHOD—请MM去麦当劳吃汉堡,不同的MM有不同的口味,要每个都记住是一件烦人的事情,我一般采用Factory Method模式,带着MM 到服务员那儿,说“要一个汉堡”,具体要什么样的汉堡呢,让MM直接跟服务员说就行了。工厂方法模式:核心工厂类不再负责所有产品的创建,而是将具体创建的工作交给子类去做,成为一个抽象工厂角色,仅负责给出具体工厂类必须实现的接口,而不接触哪一个产品类应当被实例化这种细节。 4、PROTOTYPE—跟MM用QQ聊天,一定要说些深情的话语了,我搜集了好

国内外主流前端开发框架技术对比

一、国内外主流前端开发框架技术对比
框架名称 主要 平台 桌面端 jQuery, LESS 丰富 丰 富 丰富 丰富 基础技术 布局 CSS 控件 特效 风格设 置 手动配 置 一般 一般 简单
Ratchet
移动端
HTML5,css
简单
中 等
桌面端
jQuery
-
-
丰富
丰富 预置/可 视化配 置
移动端
jQuery
丰富
-
丰富
丰富 预置/可 视化配 置
桌面端 Ext JS, Sass
丰富
-
极丰 富
极丰 富 丰富
预置
移动端
HTML5
丰富
-
丰富
-
Boostrap
Bootstrap 是目前桌面端最为流行的开发框架,一经推出,势不可挡。 Boostrap 来自于 Twitter,是一个基于 HTML,CSS,JAVASCRIPT 的时尚的、直观 的、强大的流行前端框架及交互组件集,可用于快速,简单构建你的网站。 Bootstrap 主要针对桌面端市场,Bootstrap3 提出移动优先,不过目前桌面端 依然还是 Bootstrap 的主要目标市场。 Bootstrap 主要基于 jQuery 进行

JavaScript 处理, 支持 LESS 来做 CSS 的扩展。 Bootstrap 框架在布局、 版式、 控件、特效方面都非常让人满意,都预置了丰富的效果,极大方便了用户开发。 在风格设置方面,还需要用户在下载时手动设置,可配置粒度非常细,相应也比 较繁琐,不太直观,需要对 Bootstrap 非常熟悉配置起来才能得心应手。在浏 览器兼容性方面,目前 Firefox, Chrome, Opera, Safari, IE8+等主流浏览器 Bootstrap 都提供支持。 但是在 IE 支持方面略显短板,对 IE6 和 IE7 支持都 不是特别理想。在 Bootstrap3 中甚至放弃了对 IE6、IE7 的支持。在框架扩展 方面,随着 Bootstrap 的广泛使用,扩展插件和组件也非常丰富,涉及显示组 件、兼容性、图表库等各个方面。
Bootstrap 拥有以下特性: ? ? ? ? ? ? ? ? ? ? ? 适应各种技术水平 跨设备,跨浏览器 12 列栅格布局 响应式设计 样式化的文档 不断完善的库 定制的 jQuery 插件:Bootstrap 提供了定制的 jQuery 内置插件。 用 LESS 构建 支持 HTML5 标签和语法 支持 CSS3 免费开源
Ratchet
Ratchet 最初是 Twitter 的一套面向 iOS 原生应用程序的 HTML/CSS 原型。 在 看到这些原型对于开发过程多么重要之后, 团队决定将其作为一个移动应用程序 原型设计工具开源。团队很快就清楚地认识到,Ratchet 不仅非常适合构建移动 应用程序原型,而且还非常适合完备的移动应用程序。Ratchet 并没有试图在平 台或浏览器方面使用 CSS 做任何特别的事。它的目标是保持简洁,那样更容易理 解和实现。

二十三种设计模式的通俗理解

二十三种设计模式的通俗理解 1、FACTORY 追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是生产鸡翅的Factory 工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的修改。如:如何创建及如何向客户端提供。 2、BUILDER MM最爱听的就是“我爱你”这句话了,见到不同地方的MM,要能够用她们的方言跟她说这句话哦,我有一个多种语言翻译机,上面每种语言都有一个按键,见到MM我只要按对应的键,它就能够用相应的语言说出“我爱你”这句话了,国外的MM也可以轻松搞掂,这就是我的“我爱你”builder。(这一定比美军在伊拉克用的翻译机好卖)建造模式:将产品的内部表象和产品的生成过程分割开来,从而使一个建造过程生成具有不同的内部表象的产品对象。建造模式使得产品内部表象可以独立的变化,客户不必知道产品内部组成的细节。建造模式可以强制实行一种分步骤进行的建造过程。

3、FACTORY METHOD 请MM去麦当劳吃汉堡,不同的MM有不同的口味,要每个都记住是一件烦人的事情,我一般采用Factory Method模式,带着MM到服务员那儿,说“要一个汉堡”,具体要什么样的汉堡呢,让MM直接跟服务员说就行了。工厂方法模式:核心工厂类不再负责所有产品的创建,而是将具体创建的工作交给子类去做,成为一个抽象工厂角色,仅负责给出具体工厂类必须实现的接口,而不接触哪一个产品类应当被实例化这种细节。 4、PROTOTYPE 跟MM用QQ聊天,一定要说些深情的话语了,我搜集了好多肉麻的情话,需要时只要copy出来放到QQ里面就行了,这就是我的情话prototype了。(100块钱一份,你要不要)原始模型模式:通过给出一个原型对象来指明所要创建的对象的类型,然后用复制这个原型对象的方法创建出更多同类型的对象。原始模型模式允许动态的增加或减少产品类,产品类不需要非得有任何事先确定的等级结构,原始模型模式适用于任何的等级结构。缺点是每一个类都必须配备一个克隆方法。 5、SINGLETON 俺有6个漂亮的老婆,她们的老公都是我,我就是我们家里的老公Sigleton,她们只要说道“老公”,

10大移动Web开发框架

10大移动Web开发框架 开发者在创建web程序和Web移动开发时应该不断的挑战自我,开发新技术。如今,触屏时代了终结了鼠标,大多数便携式应用改变了传统的台式机产品。为了帮助您快速的构建跨平台的移动应用和网页,本文收集了一些JavaScript框架。对此,你可以充分利用它。 移动Web开发框架的主要特点: 优化触屏设备:触屏设备代替了鼠标,给用户界面设计提供更多的挑战。移动Web开发框架给移动设备平台提供标准的UI元素和事件处理。 跨平台:支持多个移动设备平台,比如iOS和Android等。 轻量级:由于目前带宽的限制,降低文件重量的重点是放在移动Web开发框架上。 使用HTML5和CSS3的标准:大多数主流移动设备的Web浏览器支持HTML5和CSS3。 文中的这些轻量级框架使用HTML5和CSS3标准来帮助您快速开发跨平台的Web移动应用和网站。 1. jQuery Mobile

jQuery Mobile这个框架能够帮助你快速开发出支持多种移动设备的Mobile应用用户界面。它是当前最流行的移动开发框架。 jQuery Mobile不仅会给主流移动平台带来jQuery核心库,而且会发布一个完整统一的jQuery移动UI框架。虽然jQuery Mobile相对较新,但开发人员可以用jQuery Mobile为许多移动设备(包括智能手机和平板电脑)开发网站应用程序,RSS阅读器等应用。 查看jQuery Mobile实战应用,可以在这里看它的示例。 假如你不熟悉jQuery,可以选择MooTools Mobile,一个由MooTools核心开发人员Christoph Pojer开发的一个MooTools插件。还有一个是Dojo Mobile,这个利用了Dojo API来帮助开发人员快速构建一个用于移动平台的应用。 2. Titanium Mobile

AppCan移动应用开发框架- AppCan应用开发

AppCan移动应用开发框架-AppCan应用开发 AppCan官方网站:https://www.wendangku.net/doc/335464530.html, 1、介绍 AppCan应用推荐使用AppCan集成调试环境进行开发,也可以使用其他常见网页编辑软件进行修改。但为了调试和测试方便,建议采用AppCan 集成调试环境在下载页可以下载。 基本的开发步骤可以参考如下图例:

开发主要步骤由四大步组成 ?安装配置 在这个阶段,开发者需要下载和配置开发环境。并下载所用调试移动终端对应的AppCan Player程序用于后期调试。 ?开发 在这个阶段,开发者需要建立自己的项目工程,并根据需求,参考示例代码和文档,编写应用。 ?调试和测试 在这个阶段,开发者使用AppCan模拟器测试应用的展示效果和测试应用功能。也可使用AppCan Player测试应用在真机上得表现。 ?发布 开发者测试玩应用后可以把应用发布给最终发布给最终用户使用。 AppCan应用是使用HTML5开发的基于AppCan中间件运行的移动应用程序。目标程序分为两个类别。 主应用和插件应用两类 ?主应用 使用AppCan平台开发的,可以跟其他原生应用一样安装的程序 ? AppCan开放平台应用 作为AppCan主应用的扩展,可以在主应用中的我的空间下载安装的应用。 主应用和AppCan开放平台应用的开发流程基本一致,只是在最终生成发布时有所差别。 2、项目管理 AppCan项目是由HTML文件、CSS文件、JavaScript文件、Config文件和其他图片、音乐、视频资源按照一定的目录结构规则组成。AppCan集成调试工具可以快捷的打包您的项目或发布到AppCan开放平台。 当您使用AppCan集成开发调试环境创建一个新项目,AppCan IDE会自动建立必要地目录并放入默认的资源、脚本文件。开发者在此基础上添加自己的资源、文件夹和文件。以下是一个AppCan项目的文件和目录结构: Andorid_iphone AppCan是一个可以用于进行跨平台应用开发的系统,每个应用默认都适配于Andorid、iOs平台。而Symbian 平台接口和能力稍有差别,因此在项目构件时,项目构建向导会默认建立Android_iphone和symbian目录,其中Andorid_iphone目录下作为标准适配应用代码路径。开发者完成调试后,可以拷贝Android_iphone 目录下地所有文件到Symbian路径下,使用AppCan player for S60进行测试后,使用AppCan云端打包服务器,编译可在Symbian平台运行的应用。 Css AppCan应用的默认样式表格存放路径,存储了AppCan UI框架需要的资源等信息。用户自定义的样式和样式用到的相关资源也可放到此路径下 Images 样式表格需要用到的图片资源 Res-apple 苹果样式按钮用到的图片资源

23种设计模式

新版设计模式手册 一.创建型模式 1.单件模式 意图 保证一个类仅有一个实例,并提供一个访问它的全局访问点。 适用性 当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时。 当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时。 2.抽象工厂 意图 提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 适用性 一个系统要独立于它的产品的创建、组合和表示时。 一个系统要由多个产品系列中的一个来配置时。 当你要强调一系列相关的产品对象的设计以便进行联合使用时。 当你提供一个产品类库,而只想显示它们的接口而不是实现时。 3.建造者模式 意图 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 适用性 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。 当构造过程必须允许被构造的对象有不同的表示时。 4.工厂方法模式 意图 定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method 使一个类的实例化延迟到其子类。 适用性 当一个类不知道它所必须创建的对象的类的时候。 当一个类希望由它的子类来指定它所创建的对象的时候。 当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候。 5.原型模式

意图 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 适用性 当要实例化的类是在运行时刻指定时,例如,通过动态装载;或者 为了避免创建一个与产品类层次平行的工厂类层次时;或者 当一个类的实例只能有几个不同状态组合中的一种时。建立相应数目的原型并克隆它们可能比每次用合适的状态手工实例化该类更方便一些。 二.结构型模式 6.适配器模式 意图 将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 适用性 你想使用一个已经存在的类,而它的接口不符合你的需求。 你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作。 (仅适用于对象Adapter)你想使用一些已经存在的子类,但是不可能对每一个都进行子类化以匹配它们的接口。对象适配器可以适配它的父类接口。 7.桥接模式 意图 将抽象部分与它的实现部分分离,使它们都可以独立地变化。 适用性 你不希望在抽象和它的实现部分之间有一个固定的绑定关系。例如这种情况可能是因为,在程序运行时刻实现部分应可以被选择或者切换。 类的抽象以及它的实现都应该可以通过生成子类的方法加以扩充。这时Bridge模式使你可以对不同的抽象接口和实现部分进行组合,并分别对它们进行扩充。 对一个抽象的实现部分的修改应对客户不产生影响,即客户的代码不必重新编译。 有许多类要生成。这样一种类层次结构说明你必须将一个对象分解成两个部分。 你想在多个对象间共享实现(可能使用引用计数),但同时要求客户并不知道这一点。8.组合模式 意图 将对象组合成树形结构以表示“部分-整体”的层次结构。Composite 使得用户对单个对象和组合对象的使用具有一致性。 适用性

相关文档
相关文档 最新文档