设计模式(PowerDesigner)
安静平和
这个作者很懒,什么都没留下…
展开
-
浅析依赖倒置(DIP)、控制反转(IOC)和依赖注入(DI)
写这篇文章的原因是这两天在编写关于 Dagger2 主题的博文时,花了大量的精力来解释依赖注入这个概念。后来想一下,这些在面向对象开发过程中与依赖相关的诸多术语和概念实际情况下非常的抽象,因此独立成文也有就一定的意义,旨在帮助初学者快速地对这些概念有一个大致的印象,然后通过一些实例来领悟它们之中的内在奥秘。 什么是依赖(Dependency)?依赖是一种关系,通俗...转载 2018-06-19 13:22:20 · 2778 阅读 · 1 评论 -
三层架构实例
写一个小的三层架构给新手朋友们分享一下。一、打开VS 20051、文件--》新建--》项目2、展开其它项目类型--》Visual Studio解决方案=》空白解决方案3、起一个名字,并确定(如下图)4、在解决方案资源管理器里面右键点击解决方案--》添加--》新建项目--》类库,在名称里输入Model5、同样的方法,再新建BLL和DAL两个类库转载 2016-03-10 22:00:57 · 767 阅读 · 0 评论 -
编写DLL所学所思(2)-DLL编写优化
一、导出类的简单方式这种方式是比较简单的,同时也是不建议采用的不合适方式。只需要在导出类加上__declspec(dllexport),就可以实现导出类。对象空间还是在使用者的模块里,dll只提供类中的函数代码。不足的地方是:使用者需要知道整个类的实现,包括基类、类中成员对象,也就是说所有跟导出类相关的东西,使用者都要知道。通过Dependency Walker可以看到,这时候的dll导出转载 2016-02-03 11:16:47 · 648 阅读 · 0 评论 -
23种设计模式(java)一
设计模式(Design Patterns) ——可复用面向对象软件的基础设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真转载 2016-03-01 12:29:01 · 1034 阅读 · 0 评论 -
Paxos算法与Zookeeper分析
http://blog.csdn.net/xhh198781/article/details/109496971 Paxos算法1.1 基本定义算法中的参与者主要分为三个角色,同时每个参与者又可兼领多个角色:⑴proposer 提出提案,提案信息包括提案编号和提议的value;⑵acceptor 收到提案后可以接受(accept)提案;⑶lear转载 2015-12-26 11:33:27 · 804 阅读 · 0 评论 -
深入浅出 RPC - 浅出篇
近几年的项目中,服务化和微服务化渐渐成为中大型分布式系统架构的主流方式,而 RPC 在其中扮演着关键的作用。在平时的日常开发中我们都在隐式或显式的使用 RPC,一些刚入行的程序员会感觉 RPC 比较神秘,而一些有多年使用 RPC 经验的程序员虽然使用经验丰富,但有些对其原理也不甚了了。缺乏对原理层面的理解,往往也会造成开发中的一些误用。本文分上下两篇《浅出篇》和《深入篇》,其目标就是想尝试转载 2015-12-17 15:11:21 · 635 阅读 · 0 评论 -
依赖注入(Dependency Injection)模式
1.2 依赖注入模式依赖注入(Dependency Injection) 是一个非常简单的概念,伸手-等待。(让DIP、IoC滚蛋)如例程1-5所示,Client依赖于抽象类型(甚至是具体类) IServer,蛋是(1)Client的类体中不创建IServer(子类)的对象,它不想自己创建IServer对象,而是提供public的构造器Client(IServer)或设置方法s转载 2015-12-17 13:02:22 · 2531 阅读 · 0 评论 -
依赖倒置、控制反转和依赖注入辨析
http://blog.csdn.net/moreorless/article/details/4510859依赖倒置、控制反转和依赖注入辨析 在《道法自然——面向对象实践指南》一书中,我们采用了一个对立统一的辩证关系来说明“模板方法”模式—— “正向依赖 vs. 依赖倒置”(参见:《道法自然》第15章[王咏武, 王咏刚 2004])。这种把“好莱坞”原则和 “依赖倒置”原转载 2015-12-17 12:49:02 · 2530 阅读 · 1 评论 -
什么是依赖注入
Spring 能有效地组织J2EE应用各层的对象。不管是控制层的Action对象,还是业务层的Service对象,还是持久层的DAO对象,都可在Spring的 管理下有机地协调、运行。Spring将各层的对象以松耦合的方式组织在一起,Action对象无须关心Service对象的具体实现,Service对 象无须关心持久层对象的具体实现,各层对象的调用完全面向接口。当系统需要重构时,代码的改写量将大转载 2015-12-17 10:44:27 · 484 阅读 · 0 评论 -
spring框架(二)依赖注入
spring框架为我们提供了三种注入方式,分别是set注入,构造方法注入,接口注入。接口注入不作要求,下面介绍前两种方式。1,set注入 采用属性的set方法进行初始化,就成为set注入。 1)给普通字符类型赋值。[java] view plaincopyprint?public class Use转载 2015-12-14 13:35:27 · 568 阅读 · 0 评论 -
spring框架(一)
1,什么是spring框架spring是J2EE应用程序框架,是轻量级的IoC和AOP的容器框架,主要是针对javaBean的生命周期进行管理的轻量级容器,可以单独使用,也可以和Struts框架,ibatis框架等组合使用。 2,架构概述 1)IoC(Inversion of Control)控制反转,对象创建责任的反转,在sprin转载 2015-12-14 12:50:44 · 1784 阅读 · 0 评论 -
三层架构实战篇—系统登录实例
上一篇博客,介绍了三层的一些基本理论,但是学习光有理论还是不行滴!马克思不也说过了吗?实践是检验真理的唯一标准! 所谓的三层分为物理上的三层和逻辑上的三层。物理上的三层包括:客户端(PC)、应用服务器、数据库服务器。逻辑上的三层,也就是我们要讨论的,分为表示层、业务逻辑层、数据访问层。实体层,严格的来说不属于三层中的任一层,它是独立于其他三个层次的,只能供其他层次进行引用,但转载 2016-03-10 22:23:06 · 1075 阅读 · 0 评论 -
软件行业里常说的“架构”
http://toutiao.com/i6255124715283694081/?tt_from=mobile_qq&utm_campaign=client_share&app=news_article&utm_source=mobile_qq&iid=3541098878&utm_medium=toutiao_ios缘起一直以来,在软件行业,对于什么是架构,都有很转载 2016-02-26 12:38:39 · 1505 阅读 · 0 评论 -
桥梁模式应用场景
抽象与实现抽象不应该依赖于实现细节,实现细节应该依赖于抽象。问题在于如果抽象B由于固有的原因,本身并不稳定,也有可能变化,怎么办? 举例来说假如我们需要开发一个同时支持PC和手机的坦克游戏,游戏在PC和手机上功能都一样,都有同样的类型,面临同样的功能需求变化,比如坦克可能有很多种不同的型号:T50,T75,T90……对于其中的坦克设计,我们可能很容易设计出来一个Tank转载 2017-12-04 16:44:00 · 1278 阅读 · 0 评论 -
设计模式学习笔记-状态模式
1. 概述 当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。2. 解决的问题 主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同的一系列类当中,可以把复杂的逻辑判断简单化。3. 模式中的角色 3.1 上下文环境(Context):它定义了客户程序需要的接口并维护一个具体状态角色的实例,转载 2016-08-25 13:44:22 · 421 阅读 · 0 评论 -
PowerDesigner 中 dependency与 link/ExtendedDependency的区别
dependency 主键link/extended dependency 外键cdm中使用转载 2016-08-02 11:01:39 · 5212 阅读 · 0 评论 -
浅谈依赖注入
http://www.cnblogs.com/yangecnu/p/Introduce-Dependency-Injection.html好文,可以看看原文下读者的提问最近几天在看一本名为Dependency Injection in .NET 的书,主要讲了什么是依赖注入,使用依赖注入的优点,以及.NET平台上依赖注入的各种框架和用法。在这本书的开头,讲述了软件工程中转载 2016-08-04 22:47:01 · 485 阅读 · 0 评论 -
动态库的动态加载和静态加载
动态库的动态加载方式调用,里面定义的数据结构理论上只作为dll内部使用!在这种情况下,如果这个dll的导出函数参数有内部定义的数据类型,显然是违反低耦合性原则的,实际上这种情况下编写dll方应该提供.h、.lib和.dll文件给使用者的,即你不能以动态库的动态加载方式调用,而是以动态库的静态加载方式调用! 换句话说,一般的只提供dll和导出函数文档这种情况,其dll中的导出函数参数列表都应该原创 2016-07-19 09:18:21 · 1963 阅读 · 0 评论 -
观察者设计模式
1. 概述 有时被称作发布/订阅模式,观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。2. 解决的问题 将一个系统分割成一个一些类相互协作的类有一个不好的副作用,那就是需要维护相关对象间的一致性。我们不希望为了维持一致性而使各类紧密耦合,这样会给维护、扩展和重用都带转载 2016-07-17 10:56:17 · 443 阅读 · 0 评论 -
继承、实现、依赖、关联、聚合、组合的联系与区别
继承、实现、依赖、关联、聚合、组合的联系与区别分别介绍这几种关系:继承指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系;在Java中此类关系通过关键字extends明确标识,在设计时一般没有争议性; 实现指的是一个class类实现interface接口(转载 2016-06-13 15:10:41 · 754 阅读 · 0 评论 -
UML中关联(Association)、聚合(Aggregation)和合成(Composition)之间的区别
http://www.tuicool.com/articles/ra6BJb现在,我们需要设计一个项目管理系统,目前我们收集到了如下这些需求:REQ1:一个 项目 内有多名 项目成员REQ2:一名项目成员只能被指派给一个项目REQ3:一个项目内仅有一名项目成员被指派为 项目经理 负责管理项目REQ4:所有项目成员均是 公司员工REQ5:公司员工的 薪水 由 基本工资 和 项目奖转载 2016-06-13 15:02:04 · 1611 阅读 · 0 评论 -
association中aggregation和composition说明
http://blog.csdn.net/jinuxwu/article/details/54571801. association翻译成关联(关系,联合), 用来表述对象(注意是对象,不是类。虽然有时直接用类,那是出于方便的考虑)之间存在关系或者协作。从对象的数据结构上认识就是一个对象持有另一个对象的引用。当两个对象相互持有对方的引用那就是双向关联;当一个对象A持有另个对转载 2016-06-13 14:57:19 · 711 阅读 · 0 评论 -
23种设计模式(java)二
http://blog.csdn.net/zhangerqing/article/details/8239539我们接着讨论设计模式,上篇文章我讲完了5种创建型模式,这章开始,我将讲下7种结构型模式:适配器模式、装饰模式、代理模式、外观模式、桥接模式、组合模式、享元模式。其中对象的适配器模式是各种模式的起源,我们看下面的图:6、适配器模式(Adapter)转载 2016-04-08 16:46:23 · 452 阅读 · 0 评论 -
浅谈依赖注入
http://www.cnblogs.com/yangecnu/p/Introduce-Dependency-Injection.html最近几天在看一本名为Dependency Injection in .NET 的书,主要讲了什么是依赖注入,使用依赖注入的优点,以及.NET平台上依赖注入的各种框架和用法。在这本书的开头,讲述了软件工程中的一个重要的理念就是关注分离(转载 2015-12-12 11:36:39 · 842 阅读 · 0 评论 -
软件的三层架构
引言三层结构是传统的客户/服务器结构的发展,代表了企业级应用的未来,典型的有Web下的应用。多层结构和三层结构的含义是一样的,只是细节有所不同。之所以会有双层、三层这些提法,是因为应用程序要解决三个层面的问题。一、 软件架构和分层(一) 软件架构(software architecture)是一系列相关的抽象模式,用于指导大型软件系统各个方面的设计。 软件架构是一个系统转载 2015-12-11 14:46:36 · 4258 阅读 · 0 评论 -
MVC设计模式
MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。MVC模式最早由Trygve Reenskaug在1978年提出[1] ,是施乐帕罗奥多研究中心(Xerox PARC)在20世纪80年代为程序语言Smalltalk发明的一种软件设计模式。MVC模式的转载 2015-12-11 14:32:07 · 6381 阅读 · 0 评论 -
.NET(C#):GetHashCode 的作用
今儿看到两位同学在讨论GetHashCode方法的执行,貌似他们的对象等同性判断挺复杂的,而又想把同样的逻辑写在GetHashCode中,然后激烈的讨论着用什么算法让GetHashCode返回的整数更具唯一性。我觉得简而言之GetHashCode的作用就是:尽量用最快的时间对对象进行初步判断。当然这里时间的快慢和判断的深度没有具体要求,只要没有走极端就可以(比如太费时间,或者判断深度太浅)转载 2014-04-10 21:53:44 · 4196 阅读 · 1 评论 -
association中aggregation和composition说明
1. association翻译成关联(关系,联合), 用来表述对象(注意是对象,不是类。虽然有时直接用类,那是出于方便的考虑)之间存在关系或者协作。从对象的数据结构上认识就是一个对象持有另一个对象的引用。当两个对象相互持有对方的引用那就是双向关联;当一个对象A持有另个对象B的引用,但B不持有A的引用那就是单向关联。在UML中关联用箭头线表示,单向关联是单箭头线,双向关联是双箭头线。箭头指向被引用转载 2014-03-26 09:04:43 · 1978 阅读 · 0 评论 -
singleton模式即单例模式
单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。显然单例模式的要点有三个;一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。转载 2014-04-03 15:06:28 · 981 阅读 · 0 评论 -
迭代器模式
定义:提供一种方法访问一个容器对象中各个元素,而又不暴露该对象的内部细节。类型:行为类模式类图:如果要问java中使用最多的一种模式,答案不是单例模式,也不是工厂模式,更不是策略模式,而是迭代器模式,先来看一段代码吧:[java] view plaincopypublic static void print(Colle转载 2014-05-04 13:50:08 · 861 阅读 · 0 评论 -
UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现
类与类图1) 类(Class)封装了数据和行为,是面向对象的重要组成部分,它是具有相同属性、操作、关系的对象集合的总称。2) 在系统中,每个类具有一定的职责,职责指的是类所担任的任务,即类要完成什么样的功能,要承担什么样的义务。一个类可以有多种职责,设计得好的类一般只有一种职责,在定义类的时候,将类的职责分解成为类的属性和操作(即方法)。3) 类的属性即类的数据职责,类的操作即转载 2014-03-28 15:35:18 · 886 阅读 · 0 评论 -
在powerdesigner 使用实体的快捷方式
两种方式第一:可以创建多个diagram,直接把表拖到diagram中就可以第二:复制-》粘贴快捷方式,或者Ctrl+C先复制,再Ctrl+K粘贴到Diagram中 说明:ctrl+V 是又新建了一个与复制的实体相同的一个实体,相当于一个新的实体(实体名称必须唯一);而ctrl+K 是建了一个原实体的快捷方式(即修改原实体新实体也会随之变化)转载 2014-03-27 21:25:09 · 5145 阅读 · 0 评论 -
property和attribute的区别
property是指类向外提供的数据区域。而attribute则是描述对象在编译时或运行时属性的,分为固有型和用户自定义型,其中用户自定义型可以利用Reflection在运行期获取。这两者是有本质区别的。资料上说二者一个是service的属性,而另一个是interface的。第一种好象更准确,摘要如下:在很多人的脑海中,Attribute就是类的属性,Prope转载 2014-03-28 15:46:07 · 1207 阅读 · 0 评论 -
建立对象之间的关联关系的方式
已知对象A 和对象B,建立他们之间的关联关系1、对象A中含有对象B的引用,对象B中含有对象A的引用2、对象A中记下对象B的名字。这两中方式那种好??????原创 2014-03-28 15:03:16 · 1271 阅读 · 0 评论 -
对象之间的关系
下面以对象间的耦合度和关系的强弱性的由低到高进行描述:依赖:(Dependency)对象之间最弱的一种关联方式,是临时性的关联。代码中一般指由局部变量、函数参数、返回值建立的对于其他对象的调用关系。 图 依赖关系 1) 就是一个对象调用被依赖对象中的某些方法而得以完成这个对象的一些职责转载 2014-03-28 10:57:02 · 877 阅读 · 0 评论 -
自定义属性
/// /// 公共属性结构体,支持自定义 /// class Attribute { private Whole _whole = null; private bool _isPart = false; public Attribute()原创 2014-03-13 18:45:21 · 742 阅读 · 0 评论 -
设计模式、框架和架构的联系
设计模式举个例子来说:有一面墙,现在要让一组人翻过去。前面三个人用了三种不同的翻墙方式。后面排队的人发现第三个人的方式更好。所以他们都重复第三个人的翻墙方式。这时,我们就可以说第三个人发现了一种“模式”。通过这个例子,可以很容易的明白:模式是一种解决问题的思路,而不是具体的做法。就好像大家都使用一种方式来翻墙,但具体到翻墙的动作时,每个人都会根据自己的身高、转载 2014-08-11 11:03:16 · 810 阅读 · 0 评论 -
桥接模式-通俗的理解(转)
本文来自:崔成龙博客专栏。转载请注明出处:http://blog.csdn.net/xiaoxian8023 软考上午题终于考完了。三个赶考者都感觉不错。检查了2遍,提前30分钟都出来了 。 小A,小B,小C楼下碰头,相视一笑,轻松之感溢于言表。遂决定去吃面,以犒劳自己的肚子。 “老板,我要西红柿鸡蛋面!”,“尖椒炸酱面!”,“苏格兰打卤面!”。。。。。。“好嘞转载 2014-08-11 16:39:54 · 3197 阅读 · 0 评论 -
MVC 模式(很经典的时钟实例)
MVC模式是”Model-View-Controller”的缩写,中文翻译为”模式-视图-控制器”。MVC应用程序总是由这三个部分组成。 Event(事件)导致Controller改变Model或View,或者同时改变两者。只要Controller改变了Models的数据或者属性,所有依赖的View都会自动更新。MVC模式能使界面(Viwe)和数据(Model)能有效的分开,由控制器(转载 2015-12-11 15:54:59 · 1611 阅读 · 0 评论 -
秒杀多线程第五篇 经典线程同步 关键段CS
上一篇《秒杀多线程第四篇 一个经典的多线程同步问题》提出了一个经典的多线程同步互斥问题,本篇将用关键段CRITICAL_SECTION来尝试解决这个问题。本文首先介绍下如何使用关键段,然后再深层次的分析下关键段的实现机制与原理。关键段CRITICAL_SECTION一共就四个函数,使用很是方便。下面是这四个函数的原型和使用说明。 函数功能:初始化函数原型:转载 2015-10-22 11:08:44 · 575 阅读 · 0 评论