上一页 1 ··· 5 6 7 8 9 10 11 12 13 下一页
摘要: 在WPF内可以使用DataTemplate,来辅助完成对对象集合做DataBinding的工作。并且透过DataTemplate的DataType属性,来让对象集合中不同的对象,经过DataBinding之后能有「不同的外观」。简单的范例如下:不同的车辆类型,会依照车辆类型,呈现不同的详细数据。namespace BindingInterfaceSample{ public class Car { public string Name { get; set; } } public class Truck : Car { public i... 阅读全文
posted @ 2012-05-29 20:24 Clark159 阅读(1873) 评论(1) 推荐(2) 编辑
摘要: 动机Service Locator是一个在开发系统时,很常用的一个模式。在Martin Fowler写的Inversion of Control Containers and the Dependency Injection pattern里,可以发现这个Pattern的身影。Service Locator最主要是定义BLL层内对象生成、对象存放、对象取得的职责,让系统在取得对象时不需要知道对象是如何生成及存放,有效降低系统的耦合性。同时学习Service Locator,也为架构设计带入了空间的概念。在设计架构的时候,可以套用Service Locator来做为架构空间的封装。将经对象生成建 阅读全文
posted @ 2012-05-21 08:12 Clark159 阅读(1380) 评论(5) 推荐(0) 编辑
摘要: 前言在做架构设计的时候,数据对象进出系统边界,可以采用先前的文章介绍的[Architecture Pattern] Repository,来将外部的系统、模块、数据库…等等,隔离在架构之外。而当系统采用关系数据库来做为储存数据库的时候,开发人员必需要在程序内加入ORM(Object Relational Mapping)的功能,才能将数据对象与关系数据库数据做互相的转换。但当开发人员要从数据库查询大量数据的时候,会惊觉上述ORM的运作模式是:将数据库查询到的「所有数据」,转换为数据对象集合放在「内存内」,再交由系统去使用。「所有数据」、「内存内」这两个关键词,决定了在大量数据的处理上,这个运作 阅读全文
posted @ 2012-05-06 14:26 Clark159 阅读(1434) 评论(1) 推荐(1) 编辑
摘要: 动机Repository Pattern是一个在开发系统时,很常用的一个模式。在一些大师的著作:不管是在Martin Fowler所写的PoEAA或者是Eric Eban著作的DDD里,都有出现这个Pattern的身影。Repository Pattern最主要是定义如何切割BLL层跟DAL层之间的相依性,让BLL层不用依赖于DAL层的实做。并且在有需要更换DAL目标的时候,可以有抽换DAL层的能力。同时学习Repository Pattern,也为架构设计带入了边界的概念。在设计架构的时候,可以套用Repository Pattern来做为架构边界的封装。将外部的系统、模块、数据库…等等,隔 阅读全文
posted @ 2012-04-29 20:38 Clark159 阅读(1661) 评论(2) 推荐(0) 编辑
摘要: 前言在前一个章节[.NET] XAML(1)--对象生成,介绍了「XAML对象生成」这个简单却强大的对象生成模式。透过这个XAML对象生成配合面向对象的对象设计,可以让开发人员依照XAML内容生成近乎无限组合的对象。但是光只有前一个章节介绍的内容,在实际的开发应用上,很快就会遇到不足的地方。假设现在要使用Property-Element的设定,将TextBlock 的Text设定为.NET里的Null,开发人员可能会写出下面范例的XAML。<TextBlock x:Name="ShowTextBlock" FontSize="72"> < 阅读全文
posted @ 2012-04-21 15:06 Clark159 阅读(1257) 评论(0) 推荐(2) 编辑
摘要: 前言XAML是微软推出的一种宣告式标记语言,采用XML的格式让开发人员设计应用程序编程接口。在微软近期推出的各种开发平台,例如WPF、Silverlight、WP7、甚至Win8的Metro style app开发上都可以看到XAML的身影。XAML可以这么的神奇的跨平台运作,是因为XAML不涉足执行平台的运作、机制...等等,只单纯的依照开发人员的设计,建立对应的对象让执行平台使用。例如:XAML范例<phone:PhoneApplicationPage x:Class="XamlSample.MainPage" xmlns="http://schemas 阅读全文
posted @ 2012-04-10 22:33 Clark159 阅读(1163) 评论(2) 推荐(4) 编辑
摘要: 前言 :写程序的时候都会听到说,要降低程序之间的相依性。程序之间的「相依性」,可以用下面简单的范例来理解。FunctionA里面使用了FunctionB,当FunctionB功能变更的时候,FunctionA就必须跟着做修改。这也就是说,「FunctionA相依FunctionB」。static void FunctionA(){ FunctionB();}static void FunctionB(){}以上面这个范例看起来,相依性不会是很大的问题,改就是了。但是当我们把问题放大,假设系统里有1000个Function。Function之间互相相依。当要更改1个Function内容并且... 阅读全文
posted @ 2012-04-01 10:16 Clark159 阅读(1232) 评论(2) 推荐(5) 编辑
摘要: Design Pattern很硬很难懂,但是它绝对是一个值得开发人员投资的项目。最大的好处是可以透过学习、理解Design Pattern,学习、理解到对象几大原则: - 单一职责原则 (SRP,Single Responsibility Principle) - 开放封闭原则 (OCP,Open Closed Principle) - 依赖倒置原则 (DIP,Dependency Inversion Principle) - 接口隔离原则 (ISP,Interface Segregation Principle) - Liskov替换原则 (LSP,Liskov Substitution P 阅读全文
posted @ 2012-03-24 00:20 Clark159 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 撰写多线程对象时,执行速度是一项很重要的设计考虑。通常为了加快执行速度,会将执行运作逻辑的主线程,跟发出事件的事件线程做隔离设计。这样的隔离设计可以不让主线程,因为外部事件处理而停顿。而这样的设计下,为了简化线程管理,可以采用ThreadPool来完成事件线程的工作。简单的程序范例如下:namespace ConsoleApplication1{ class Program { static void Main(string[] args) { var obj = new ClassA(); obj.Notif... 阅读全文
posted @ 2012-03-22 12:50 Clark159 阅读(2038) 评论(8) 推荐(1) 编辑
摘要: 接续...[Architecture Design] DDD经验分享 (中)系统设计阶段 (SD)「系统设计阶段」主要的工作是对设计完成的系统架构,做每个功能模块的对象设计。一般会采UML的「类别图」、「循序图」等等工具,来完成系统设计的工作。最终将设计完毕的解决方案,整理成一份「系统设计规格书」。如果说需求分析阶段是建立骨架,那么系统设计阶段就是填补血肉的工作。从系统分析阶段要跨到系统设计阶段,说真的也是一种无中生有的创造过程。只不过不同的是,系统分析阶段是整个系统架构无中生有,系统设计阶段是针对模块对象要无中生有。这时候领域模型就发挥了指引的功能。透过分析设计领域模型的方式,可以有限度的将 阅读全文
posted @ 2012-03-14 08:07 Clark159 阅读(1576) 评论(0) 推荐(2) 编辑
摘要: 接续...[Architecture Design] DDD经验分享 (上)系统分析阶段 (SA)「系统分析阶段」主要的工作是对客户的需求内容,提出解决方案并且分析系统架构。一般会采UML的配置图、套件图等等工具,来完成系统分析的工作。最终将设计完毕的解决方案,整理成一份「系统需求规格书」。系统分析阶段要做的事很多很杂,甚至可以说是一种无中生有的创造过程。 经验不足的开发人员进入这个阶段,通常会不知所措。这时可以将系统分析阶段的工作,切割为不同角度来做分析设计,这也就是所谓的「视图方法」。透过视图方法去分析设计整个系统架构,决定系统架构所需要的软件分层、功能模块....等等。同时也以分析设计需 阅读全文
posted @ 2012-03-13 22:34 Clark159 阅读(1399) 评论(0) 推荐(2) 编辑
摘要: 前言身为一个开发人员,应该会有听过「软件开发流程」、「领域驱动开发」等等,这些开发技术名词。但是...开发人员心底话,包含我自己都觉得:数据文件都写的跟天书一样,模模糊糊的、项目压力下赶工都来不及了,谁有空搞这些的东西。今天要来扭转这种印象,让开发人员搞懂「软件开发流程」、「领域驱动开发」这些开发技术。并且以自身的开发经验,说明这些开发技术该在哪用、怎么用。让项目的开发不再是无中生有,而是一个循序渐进的过程慢慢「长」出来的。*在文章开始之前,一定要先提一个最重要的重点:开发技术没有最好的只有最适合的。硬搬教条式的项目到自己团队中,让成员做的很累,这样一定不会长久。例如用来当作本篇文章议题内容的 阅读全文
posted @ 2012-03-13 11:49 Clark159 阅读(1773) 评论(1) 推荐(2) 编辑
摘要: 动机 :Plugin是在软件系统内增加功能的功能。 如果在软件系统加入Plugin功能,能提高软件系统的重用性。加入Plugin功能的软件系统在开发完成之后。 如果需要额外加入功能,不用变更已完成的软件系统就能加入新功能。 并且因为不用变更已完成的软件系统,也就避免了修改软件系统会产生的风险。另外在系统里加入Plugin功能,其实会遇到一个问题。 当有多个Plugin内容加入系统的时候,该如何去识别与取得加入的Plugin内容。本文介绍一个『Service Plugin 模式』, 定义对象之间的职责跟互动,用来实现Plugin提供的功能,并且封装Plugin内容识别与取得的职责。 为自己做个纪 阅读全文
posted @ 2012-02-17 13:09 Clark159 阅读(1246) 评论(0) 推荐(0) 编辑
摘要: 动机 :在开发与数据库沟通的系统时,因为建立数据库联机是比较昂贵的。 所以ADO.NET在背后帮开发人员,实做了 ConnectionPool的机制。 将系统内建立的数据库联机做快取,当系统要使用时就直接使用快取联机,避免了每次都建立新数据库联机的花费。 并且实际上在使用ADO.NET时,开发人员对于背后的ConnectionPool机制其实是无感的。 要让开发人员无感,可是又能完成快取的功能,这真的要花一点工夫去设计。本文介绍一个『Singleton Pool模式』。 定义对象之间的职责跟互动,用来建置类似ConnectionPool功能的对象池功能,并且提供开发人员无感的使用界面。 为自己 阅读全文
posted @ 2012-02-10 08:04 Clark159 阅读(1259) 评论(2) 推荐(1) 编辑
摘要: 动机 :Plugin是在软件系统内增加功能的功能。 如果在软件系统加入Plugin功能,能提高软件系统的重用性。加入Plugin功能的软件系统在开发完成之后。 如果需要额外加入功能,不用变更已完成的软件系统就能加入新功能。 并且因为不用变更已完成的软件系统,也就避免了修改软件系统会产生的风险。在MVVM的架构下View跟ViewModel各自独立,做Plugin功能也就变得比较复杂。 必须要View跟ViewModel各自都有Plugin功能然后再互相组合,才能完成MVVM Plugin的功能。本篇文章记录在WPF上,如何实做MVVM Plugin。 为自己做个纪录,也希望能帮助到有需要的开发 阅读全文
posted @ 2012-02-05 15:32 Clark159 阅读(1968) 评论(0) 推荐(2) 编辑
上一页 1 ··· 5 6 7 8 9 10 11 12 13 下一页