Welcome 微信登录

首页 / 软件开发 / .NET编程技术

Visual Studio DSL入门 2 --- 需求

Visual Studio DSL入门 2 --- 需求

Visual Studio DSL入门 2 --- 需求2011-02-06 博客园 孤独侠客相信如果看过一上篇你已经对vs.net dsl有了一定的了解,接下来我们就来开始我们的这个系列的入门,Vs.net Dsl在国内可能使用的人少之又少,不过希望这个系列能够使看到的人能够对dsl有一定的了解,使之能够成为产品方案选型时的一个参考,能够对阅读的人有所帮助.准备环境由于vs.net 2010并未正式发布,所以这一系列基于vs 2008 sp1进行开发,D...
Visual Studio DSL入门 4--- 基本概念

Visual Studio DSL入门 4--- 基本概念

Visual Studio DSL入门 4--- 基本概念2011-02-06 博客园 孤独侠客开发一个DSL需要创建的几个不同的组成部分:域模型,图形符号,工具箱,资源管理器和属性窗口,验证,序列化和部署,打开上一节我们创建的 LanguageSm项目中的DslDefinition.dsl文件,可以看到在中心文档区域有左右两部分(两个泳道).1.左侧是元数据模型(域模型). 也就是域类和域关系.2.右侧是图形符合,也就是图形元素(Diagram Elem...
Visual Studio DSL入门 5---理解生成的域类和域关系

Visual Studio DSL入门 5---理解生成的域类和域关系

Visual Studio DSL入门 5---理解生成的域类和域关系2011-02-06 博客园 孤独侠客1. 首先找到Dsl项目中模板DomainClasses.tt生成的DomainClasses.cs,我们来查看一下它由两个类组成:其实也就对应着我们域模型中的根域类ExampleModel和域类ExampleElement.我们仔细再来看一下ExampleElement类的具体结构.可以发现:1).字段是Guid类型的,这样更方便关系类中直接引用属...
Visual Studio DSL入门 6---DSL的图形表示1

Visual Studio DSL入门 6---DSL的图形表示1

Visual Studio DSL入门 6---DSL的图形表示12011-02-06 博客园 孤独侠客还是以我们创建的LanguageSm项目为例,我们大概介绍一下界面表示相关的概念,打开DslDefinition.dsl文件,这次我们看泳道(也就是树线)的右边:一. 图表我们看最下面的LanguageSmDiagram,这就是图表元素,它是存储形状和连接器映射的容器,代表设计界面自身,映射到模型的根域类(图形元素 Diagram Elements都是与...
.NET设计模式(1):开篇

.NET设计模式(1):开篇

.NET设计模式(1):开篇2011-02-09 cnblogs terrylee前言加入Design & Pattern团队有几个月的时间了,惭愧的是从没有写过关于设计模式的随笔,得到wayfarer的同意,把企业库系列的随笔放在了团队的首页上。不是不想去写这样的随笔,也不是没有时间,自己初学设计模式,去写设计模式的文章,有点班门弄斧的味道。园子里吕震宇老师的《设计模式系列》和wayfarer的《设计之道》堪称设计模式里的经典之作。可是正如waf...
.NET设计模式(2):单件模式(Singleton Pattern)

.NET设计模式(2):单件模式(Singleton Pattern)

.NET设计模式(2):单件模式(Singleton Pattern)2011-02-09 cnblogs terrylee概述Singleton模式要求一个类有且仅有一个实例,并且提供了一个全局的访问点。这就提出了一个问题:如何绕过常规的构造器,提供一种机制来保证一个类只有一个实例?客户程序在调用某一个类时,它是不会考虑这个类是否只能有一个实例等问题的,所以,这应该是类设计者的责任,而不是类使用者的责任。从另一个角度来说,Singleton模式其实也是一...
.NET设计模式(3):抽象工厂模式(Abstract Factory)

.NET设计模式(3):抽象工厂模式(Abstract Factory)

.NET设计模式(3):抽象工厂模式(Abstract Factory)2011-02-09 cnblogs terrylee概述在软件系统中,经常面临着“一系列相互依赖的对象”的创建工作;同时由于需求的变化,往往存在着更多系列对象的创建工作。如何应对这种变化?如何绕过常规的对象的创建方法(new),提供一种“封装机制”来避免客户程序和这种“多系列具体对象创建工作”的紧耦合?这就是我们...
.NET设计模式(4):建造者模式(Builder Pattern)

.NET设计模式(4):建造者模式(Builder Pattern)

.NET设计模式(4):建造者模式(Builder Pattern)2011-02-09 cnblogs terrylee概述在软件系统中,有时候面临着“一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法确相对稳定。如何应对这种变化?如何提供一种“封装机制”来隔离出“复杂对象的各个部分&rdqu...
.NET设计模式(5):工厂方法模式(Factory Method)

.NET设计模式(5):工厂方法模式(Factory Method)

.NET设计模式(5):工厂方法模式(Factory Method)2011-02-09 cnblogs terrylee概述在软件系统中,经常面临着“某个对象”的创建工作,由于需求的变化,这个对象的具体实现经常面临着剧烈的变化,但是它却拥有比较稳定的接口。如何应对这种变化?提供一种封装机制来隔离出“这个易变对象”的变化,从而保持系统中“其它依赖该对象的对象”不随着需求的改变而改变?这...
.NET设计模式(6):原型模式(Prototype Pattern)

.NET设计模式(6):原型模式(Prototype Pattern)

.NET设计模式(6):原型模式(Prototype Pattern)2011-02-09 cnblogs terrylee概述在软件系统中,有时候面临的产品类是动态变化的,而且这个产品类具有一定的等级结构。这时如果用工厂模式,则与产品类等级结构平行的工厂方法类也要随着这种变化而变化,显然不大合适。那么如何封装这种动态的变化?从而使依赖于这些易变对象的客户程序不随着产品类变化?意图用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。结构图Pro...
.NET设计模式(7):创建型模式专题总结(Creational Pattern)

.NET设计模式(7):创建型模式专题总结(Creational Pattern)

.NET设计模式(7):创建型模式专题总结(Creational Pattern)2011-02-09 cnblogs terrylee概述创建型模式,就是用来创建对象的模式,抽象了实例化的过程。它帮助一个系统独立于如何创建、组合和表示它的那些对象。本文对五种常用创建型模式进行了比较,通过一个游戏开发场景的例子来说该如何使用创建型模式。为什么需要创建型模式所有的创建型模式都有两个永恒的主旋律:第一,它们都将系统使用哪些具体类的信息封装起来;第二,它们隐藏了...
.NET设计模式(8):适配器模式(Adapter Pattern)

.NET设计模式(8):适配器模式(Adapter Pattern)

.NET设计模式(8):适配器模式(Adapter Pattern)2011-02-09 cnblogs terrylee概述在软件系统中,由于应用环境的变化,常常需要将“一些现存的对象”放在新的环境中应用,但是新环境要求的接口是这些现存对象所不满足的。那么如何应对这种“迁移的变化”?如何既能利用现有对象的良好实现,同时又能满足新的应用环境所要求的接口?这就是本文要说的Adapter 模式。意图将一个类的接口...
.NET设计模式(9):桥接模式(Bridge Pattern)

.NET设计模式(9):桥接模式(Bridge Pattern)

.NET设计模式(9):桥接模式(Bridge Pattern)2011-02-09 cnblogs terrylee概述在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?如何利用面向对象的技术来使得该类型能够轻松的沿着多个方向进行变化,而又不引入额外的复杂度?这就要使用Bridge模式。意图将抽象部分与实现部分分离,使它们都可以独立的变化。[GOF 《设计模式》]结构图图1 Bri...
.NET设计模式(10):装饰模式(Decorator Pattern)

.NET设计模式(10):装饰模式(Decorator Pattern)

.NET设计模式(10):装饰模式(Decorator Pattern)2011-02-09 cnblogs terrylee概述在软件系统中,有时候我们会使用继承来扩展对象的功能,但是由于继承为类型引入的静态特质,使得这种扩展方式缺乏灵活性;并且随着子类的增多(扩展功能的增多),各种子类的组合(扩展功能的组合)会导致更多子类的膨胀。如何使“对象功能的扩展”能够根据需要来动态地实现?同时避免“扩展功能的增多”...
.NET设计模式(11):组合模式(Composite Pattern)

.NET设计模式(11):组合模式(Composite Pattern)

.NET设计模式(11):组合模式(Composite Pattern)2011-02-09 cnblogs terrylee概述组合模式有时候又叫做部分-整体模式,它使我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以向处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦。意图将对象组合成树形结构以表示“部分-整体”的层次结构。Composite模式使得用户对单个对象和组合对象的使用具有一致性。...
.NET设计模式(12):外观模式

.NET设计模式(12):外观模式

.NET设计模式(12):外观模式2011-02-09 cnblogs terrylee概述在软件开发系统中,客户程序经常会与复杂系统的内部子系统之间产生耦合,而导致客户程序随着子系统的变化而变化。那么如何简化客户程序与子系统之间的交互接口?如何将复杂系统的内部子系统与客户程序之间的依赖解耦?这就是要说的Faç ;ade 模式。意图为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。...
.NET设计模式(13):享元模式(Flyweight Pattern)

.NET设计模式(13):享元模式(Flyweight Pattern)

.NET设计模式(13):享元模式(Flyweight Pattern)2011-02-09 cnblogs terrylee本文试图通过一个简单的字符处理的例子,运用重构的手段,一步步带你走进Flyweight模式,在这个过程中我们一同思考、探索、权衡,通过比较而得出好的实现方式,而不是给你最终的一个完美解决方案。主要内容:1.Flyweight模式解说2..NET中的Flyweight模式3.Flyweight模式的实现要点…&helli...
.NET设计模式(14):代理模式(Proxy Pattern)

.NET设计模式(14):代理模式(Proxy Pattern)

.NET设计模式(14):代理模式(Proxy Pattern)2011-02-09 cnblogs terrylee主要内容1.例说Proxy模式2.Proxy模式效果及实现要点……概述在软件系统中,有些对象有时候由于跨越网络或者其他的障碍,而不能够或者不想直接访问另一个对象,如果直接访问会给系统带来不必要的复杂性,这时候可以在客户程序和目标对象之间增加一层中间层,让代理对象来代替目标对象打点一切。这就是本文要说的Proxy模...
.NET设计模式(15):结构型模式专题总结

.NET设计模式(15):结构型模式专题总结

.NET设计模式(15):结构型模式专题总结2011-02-09 cnblogs terrylee主要内容1.结构型模式概述2.结构型模式区别与比较3.对变化的封装结构型模式概述结构型模式,顾名思义讨论的是类和对象的结构,它采用继承机制来组合接口或实现(类结构型模式),或者通过组合一些对象,从而实现新的功能(对象结构型模式)。这些结构型模式,它们在某些方面具有很大的相似性,仔细推敲,侧重点却各有不同。Adapter模式通过类的继承或者对象的组合侧重于转换已...
<< 41 42 43 44 45 46 47 48 49 50 >>