1 2 3 4 5 ··· 9 下一页
摘要: <Menu HorizontalAlignment="Left" Margin="5,0,0,0" Background="Black" Height="20" ItemsSource="{Binding MenuList}"> <Menu.ItemContainerStyle> <Style TargetType="MenuItem"> <Setter Property="Header" Value=" 阅读全文
posted @ 2013-05-24 10:34 Shanghai Jim Zhou 阅读(239) 评论(0) 推荐(0) 编辑
摘要: 代码说明l IAccount就是抽象主题角色。代理对象和被代理对象都遵循这个接口,这样代理对象就能替换被代理对象。注:在Adapter设计模式中,只有Adapter继承这个旧接口,目标客户端不粥承)l AccountProxy就是代理主题角色。代理主题通常会存在一些逻辑或预处理或后处理操作,不会仅仅是对操作的转发。l Account就是真实主题角色何时采用l 代理模式应用非常广泛,如果你希望降低对象的使用复杂度、或是提升对象使用的友好度、或是提高对象使用的效率都可以考虑代理模式。场景降低复杂度和提高使用效率:代 理模式非常常用,大致的思想就是通过为对象加一个代理来降低对象的使用复杂度、或是提升 阅读全文
posted @ 2013-05-08 23:27 Shanghai Jim Zhou 阅读(194) 评论(0) 推荐(0) 编辑
摘要: 基础类:ComputerGameComputerBuilder: 建造者1OfficeComputerBuilder:建造者2 ComputerBuilder: 建造者基类, 提供一些需要重写的方法,由子类去重写和实现,实现不同的建造过程。ComputerFactory: 传入建造者,开始建造看看客户端的代码,用户先是选择了一个具体的Builder,用户应该很明确它需要游戏电脑还是办公电脑,但是它可以对电脑一无所知,由销售人员给出一个合理的配置单。然后用户让ComputerFactory去为它组装这个电脑。组装完成后ComputerFactory开机,给用户验收电脑的配置是否正确。l 你或许觉 阅读全文
posted @ 2013-05-07 23:45 Shanghai Jim Zhou 阅读(244) 评论(0) 推荐(0) 编辑
摘要: 意图把一个类的接口变换成客户端所期待的另一种接口,从而使原本接口不匹配而无法在一起工作的两个类能够在一起工作。IGame |GameAdapter--->Game每次要调用的时候,就调用GameAdapter的方法,但是GameAdapter内部,其实有一个对Game的引用,调用GameAdapter的实质,就是调用Game的方法. IGame接口就是适配器模式中的目标角色,这是客户所期待的接口。也是针对老的游戏程序所遵循的接口。 GameAdapter类是适配器角色,它是适配器模式的核心,用于把源接口转变为目标接口。在这里,我们看到,它实现目标接口。问题:为什么不直接用Game实现IG 阅读全文
posted @ 2013-05-05 23:38 Shanghai Jim Zhou 阅读(208) 评论(0) 推荐(0) 编辑
摘要: Enemy类是抽象原型,它有两个用途,一是定义了原型的一些抽象内容,二是定义了原型模式必须的拷贝方法。在这里,我们看到,每个敌人的属性有位置、攻击力、速度等,并且能通过ShowInfo()方法来获取这个人的信息。 Clone()方法接受一个参数,表示是否是深拷贝。在这里,我们通过序列化反序列化实现深拷贝,深拷贝实现对象的完整复制,包括对象内部的引用类型都会复制一份全新的。在这里,如果3个敌人对象的Location都指向内存同一个地址的话,那么它们就分不开了,因此,在复制的时候需要进行深拷贝,使得它们的Location是独立的。注:试一下把MemberwiseClone, 然后改动各自的pos. 阅读全文
posted @ 2013-05-05 22:32 Shanghai Jim Zhou 阅读(311) 评论(0) 推荐(0) 编辑
摘要: 本文讲述Prism模架中经常使用的一个技巧,事件模式(自己发明的,呵呵):即我们在ViewModel中引用一个Service, 并且在Constructor的时候,订购该Service的事件,然后在ViewModel中的Command调用Service.TriggerEvent之类方法,触发事件。下面是总体框架图:ViewModel code snippet: /// <summary> /// 用注入方式获得Service的实例 /// </summary> /// <param name="textService"></para 阅读全文
posted @ 2013-04-06 20:39 Shanghai Jim Zhou 阅读(509) 评论(0) 推荐(0) 编辑
摘要: 接着上文Prism Module讲,本文主要讲述Prism Modules在Boot strapper中的配制方式,可以用ConfigureModuleCatalog 或是CreateModuleCatalog方法来配制全文中的Module Catalog.在第一个方法中,我们用代码的形式,把B ,C Module加载到了工程,在后一个模式中,我们把Module E配制在XAML中.代码1: //用代码注册模块 protected override void ConfigureModuleCatalog() { // Module ... 阅读全文
posted @ 2013-04-05 20:37 Shanghai Jim Zhou 阅读(1294) 评论(0) 推荐(0) 编辑
摘要: 程序设计中,我们讲究高内聚,低e合的设计原则,好把功能模块封装起来,作为一个整体来调用,这样在组成大型的程序设计时,便可以很好的复用和维护。今天一起学习Prism框架中的Modules这个概念。首先是整个工程的架构:在每一个模块中,我们都实现了Initialize这个方法,输入对应的说明信息:public class ModuleA:IModule { public void Initialize() { Console.WriteLine("ModuleA is initializing..."); } }在Pris... 阅读全文
posted @ 2013-04-05 19:57 Shanghai Jim Zhou 阅读(572) 评论(0) 推荐(0) 编辑
摘要: 本文用一个非常简单的例子,讲述Prism中的启动工程boot strapper的逻辑。首先看一下工程图:这是启动类Boot strapper:public class BootStrapper : UnityBootstrapper { /// <summary> /// 创建起始Window /// </summary> /// <returns></returns> protected override DependencyObject CreateShell() { var s... 阅读全文
posted @ 2013-04-05 12:09 Shanghai Jim Zhou 阅读(541) 评论(0) 推荐(0) 编辑
摘要: 在用Prism框架开发WPF/Silverlight程序的时候,经常会要手写View对应的ViewModel代码,但是很多情况下,ViewModel的代码结构相差不会很大,一般是有Property, Constructor, Command以及一些事件,所以为了提高开发效率,本文和大家探讨用一个小工具实现ViewModel的快速开发。基本思路主要流程就是解析XAML代码,首先把所有有Binding的语句段抽出来。方法:GetAllCommandPropertiesNames /// <summary> /// 获取所有Command名字 Command="{Binding 阅读全文
posted @ 2013-04-05 11:44 Shanghai Jim Zhou 阅读(504) 评论(0) 推荐(0) 编辑
1 2 3 4 5 ··· 9 下一页