![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
系统分析&架构/设计模式
文章平均质量分 93
WELLTEN
技术全面,心态积极,做事认真。
技术全面:基本掌握C#、Java、Pascal等主要的编程语言;对VS和Eclipse等主要的编译器能过熟练使用;精通C++;有很强的方案设计能力;熟悉常用的设计模式、系统分析方法和建模方式,及系统常用的架构方式。
心态积极:在团队协作项目中能够成为勇挑重担和发挥正能量的人,遇到复杂难解的事情(主要是技术方面),可以排除万难,将事情最终解决掉;
做事认真:在项目开发过程中,总是寻求解决问题的最优方案,如果时间不允许,尽量采用次优方案,绝不马虎了事。
展开
-
Java开发中的23种设计模式之六:适配器模式(Adapter)
适配器模式将某个类的接口转换成客户端期望的另一个接口表示,目的是消除由于接口不匹配所造成的类的兼容性问题。主要分为三类:类的适配器模式、对象的适配器模式、接口的适配器模式。首先,我们来看看类的适配器模式,先看类图:核心思想就是:有一个Source类,拥有一个方法,待适配,目标接口时Targetable,通过Adapter类,将Source的功能扩展到Targetable里,看代码:转载 2013-09-26 13:43:08 · 703 阅读 · 0 评论 -
Java开发中的23种设计模式之十八:命令模式(Command)
18、命令模式(Command)命令模式很好理解,举个例子,司令员下令让士兵去干件事情,从整个事情的角度来考虑,司令员的作用是,发出口令,口令经过传递,传到了士兵耳朵里,士兵去执行。这个过程好在,三者相互解耦,任何一方都不用去依赖其他人,只需要做好自己的事儿就行,司令员要的是结果,不会去关注到底士兵是怎么实现的。我们看看关系图:Invoker是调用者(司令员),Receiver是被调用转载 2013-09-27 08:25:22 · 728 阅读 · 0 评论 -
Java开发中的23种设计模式之二十二:中介者模式(Mediator)
22、中介者模式(Mediator)中介者模式也是用来降低类类之间的耦合的,因为如果类类之间有依赖关系的话,不利于功能的拓展和维护,因为只要修改一个对象,其它关联的对象都得进行修改。如果使用中介者模式,只需关心和Mediator类的关系,具体类类之间的关系及调度交给Mediator就行,这有点像spring容器的作用。先看看图:User类统一接口,User1和User2分别是不同的对象转载 2013-09-27 08:27:21 · 647 阅读 · 0 评论 -
Java开发中的23种设计模式之一:工厂方法模式(Factory Method)
从这一块开始,我们详细介绍Java中23种设计模式的概念,应用场景等情况,并结合他们的特点及设计模式的原则进行分析。1、工厂方法模式(Factory Method)工厂方法模式分为三种:11、普通工厂模式,就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建。首先看下关系图:举例如下:(我们举一个发送邮件和短信的例子)首先,创建二者的共同接口:[java]转载 2013-09-26 13:28:31 · 616 阅读 · 0 评论 -
Java开发中的23种设计模式之二:抽象工厂模式(Abstract Factory)
2、抽象工厂模式(Abstract Factory)工厂方法模式有一个问题就是,类的创建依赖工厂类,也就是说,如果想要拓展程序,必须对工厂类进行修改,这违背了闭包原则,所以,从设计角度考虑,有一定的问题,如何解决?就用到抽象工厂模式,创建多个工厂类,这样一旦需要增加新的功能,直接增加新的工厂类就可以了,不需要修改之前的代码。因为抽象工厂不太好理解,我们先看看图,然后就和代码,就比较容易理解。转载 2013-09-26 13:29:52 · 644 阅读 · 0 评论 -
设计模式6大原则之里氏替换原则(Liskov Substitution Principle)
里氏替换原则(Liskov Substitution Principle) 肯定有不少人跟我刚看到这项原则的时候一样,对这个原则的名字充满疑惑。其实原因就是这项原则最早是在1988年,由麻省理工学院的一位姓里的女士(Barbara Liskov)提出来的。 定义1:如果对每一个类型为 T1的对象 o1,都有类型为 T2 的对象o2,使得以 T1定义的所有程序 P 在所有的对象 o1 都转载 2013-09-27 11:14:56 · 839 阅读 · 0 评论 -
Java开发中的23种设计模式之二十:状态模式(State)
20、状态模式(State)核心思想就是:当对象的状态改变时,同时改变其行为,很好理解!就拿QQ来说,有几种状态,在线、隐身、忙碌等,每个状态对应不同的操作,而且你的好友也能看到你的状态,所以,状态模式就两点:1、可以通过改变状态来获得不同的行为。2、你的好友能同时看到你的变化。看图:State类是个状态类,Context类可以实现切换,我们来看看代码: [java]转载 2013-09-27 08:25:59 · 585 阅读 · 0 评论 -
面向服务的体系结构(SOA) 之 关于MEP(Message Exchange Patterns)
SOA中的MEP和JavaEE中的JMS类似,当然了就应该是类似的,因为都是关于消息方面的。一个是对系统架构当中消息的解决思路,一个是针对Java平台中的消息的具体解决办法(严格说不是具体的,只是提供了接口而已)或者说和上面分析BPM与Jpbm一样,前者是后者的特例,所以后者有的特征前者大部分都有。就像JMS规范中描述的那样消息无非也就是请求与应答,这里有两种基本的模式其实很简单啦。第一种就是请求转载 2013-09-24 10:58:30 · 792 阅读 · 0 评论 -
面向服务的体系结构(SOA) 之 对于服务的理解
在接触SOA之前对“服务”这个词没有太多的感触,无非就是为别人做事情么。当然在SOA中这个词也脱离不了这层基本的涵义,但是具体到实际的架构中对这个词的理解就更加深刻了。本文就以“服务”为中心说说笔者对这个词的理解,尤其是它在SOA这个环境下的理解。由浅入深咱们先从现实说起,通常我们日常所说的“服务”这个词既可以是动词,也可以是名词例如:“为人民服务”“服务行业”。在国内对“服务”这个词理解转载 2013-09-24 10:55:56 · 919 阅读 · 0 评论 -
面向服务的体系结构(SOA) 之 关于BPM
什么是BPM很多情况下企业当中所提供的服务不是由一个分布式业务流程就可以完成的,整个服务的提供需要多个分布式流程有机的组合,于是BPM就应运而生了。要将现有的服务通过配置、编排(关于配置与编排的区别后面将说明)以满足具体的业务流程的目的就不得不借助于工作流的相关内容。毕竟各个服务之间的配合是为了提供一项合理的业务流程,这样的话就必须要设计流程,说白了就是各个服务谁先谁后的问题。从字面上理解转载 2013-09-24 10:54:19 · 766 阅读 · 0 评论 -
SOA 和 Web Service 学习笔记
1. SOA综述1.1 SOA的含义 SOA是一个基于特定标准的组织和设计方法,SOA在传统的业务层和技术层之间增加了一个服务层,通过连接能完成特定服务的独立功能实体来实现软件系统架构。它将业务层和技术层之间的信息有效地进行沟通,让企业应用层可以彻底摆脱技术的束缚。将注意力放在服务上,使得应用程序能够集中起来提供更加丰富、更加灵活、目的性更强的商业流程,使得基于SOA的企业应用系统能转载 2013-09-24 09:38:22 · 947 阅读 · 0 评论 -
Java开发中的23种设计模式之十:桥接模式(Bridge)
10、桥接模式(Bridge)桥接模式就是把事物和其具体实现分开,使他们可以各自独立的变化。桥接的用意是:将抽象化与实现化解耦,使得二者可以独立变化,像我们常用的JDBC桥DriverManager一样,JDBC进行连接数据库的时候,在各个数据库之间进行切换,基本不需要动太多的代码,甚至丝毫不用动,原因就是JDBC提供统一接口,每个数据库提供各自的实现,用一个叫做数据库驱动的程序来桥接就行了。转载 2013-09-26 13:47:28 · 763 阅读 · 0 评论 -
Java开发中的23种设计模式之十七:责任链模式(Chain of Responsibility)
17、责任链模式(Chain of Responsibility)接下来我们将要谈谈责任链模式,有多个对象,每个对象持有对下一个对象的引用,这样就会形成一条链,请求在这条链上传递,直到某一对象决定处理该请求。但是发出者并不清楚到底最终那个对象会处理该请求,所以,责任链模式可以实现,在隐瞒客户端的情况下,对系统进行动态的调整。先看看关系图: Abstracthandler类提供了g转载 2013-09-27 08:25:41 · 633 阅读 · 0 评论 -
Java开发中的23种设计模式之十三:策略模式(strategy)
13、策略模式(strategy)策略模式定义了一系列算法,并将每个算法封装起来,使他们可以相互替换,且算法的变化不会影响到使用算法的客户。需要设计一个接口,为一系列实现类提供统一的方法,多个实现类实现该接口,设计一个抽象类(可有可无,属于辅助类),提供辅助函数,关系图如下:图中ICalculator提供同意的方法,AbstractCalculator是辅助类,提供辅助方法,接下来转载 2013-09-26 13:50:06 · 558 阅读 · 0 评论 -
Java开发中的23种设计模式之十六:迭代器模式(Iterator)
16、迭代子模式(Iterator)顾名思义,迭代器模式就是顺序访问聚集中的对象,一般来说,集合中非常常见,如果对集合类比较熟悉的话,理解本模式会十分轻松。这句话包含两层意思:一是需要遍历的对象,即聚集对象,二是迭代器对象,用于对聚集对象进行遍历访问。我们看下关系图: 这个思路和我们常用的一模一样,MyCollection中定义了集合的一些操作,MyIterator中定义了一系列迭代操转载 2013-09-27 08:25:03 · 618 阅读 · 0 评论 -
Java开发中的23种设计模式之十九:备忘录模式(Memento)
19、备忘录模式(Memento)主要目的是保存一个对象的某个状态,以便在适当的时候恢复对象,个人觉得叫备份模式更形象些,通俗的讲下:假设有原始类A,A中有各种属性,A可以决定需要备份的属性,备忘录类B是用来存储A的一些内部状态,类C呢,就是一个用来存储备忘录的,且只能存储,不能修改等操作。做个图来分析一下:Original类是原始类,里面有需要保存的属性value及创建一个备忘录类,转载 2013-09-27 08:25:49 · 570 阅读 · 0 评论 -
Java开发中的23种设计模式之二十一:访问者模式(Visitor)
21、访问者模式(Visitor)访问者模式把数据结构和作用于结构上的操作解耦合,使得操作集合可相对自由地演化。访问者模式适用于数据结构相对稳定算法又易变化的系统。因为访问者模式使得算法操作增加变得容易。若系统数据结构对象易于变化,经常有新的数据对象增加进来,则不适合使用访问者模式。访问者模式的优点是增加操作很容易,因为增加操作意味着增加新的访问者。访问者模式将有关行为集中到一个访问者对象中,转载 2013-09-27 08:26:52 · 700 阅读 · 0 评论 -
Java开发中的23种设计模式之十五:观察者模式(Observer)
15、观察者模式(Observer)包括这个模式在内的接下来的四个模式,都是类和类之间的关系,不涉及到继承,学的时候应该 记得归纳,记得本文最开始的那个图。观察者模式很好理解,类似于邮件订阅和RSS订阅,当我们浏览一些博客或wiki时,经常会看到RSS图标,就这的意思是,当你订阅了该文章,如果后续有更新,会及时通知你。其实,简单来讲就一句话:当一个对象变化时,其它依赖该对象的对象都会收到通知,转载 2013-09-27 08:24:56 · 656 阅读 · 0 评论 -
Java开发中的23种设计模式之十四:模板方法模式(Template Method)
14、模板方法模式(Template Method)解释一下模板方法模式,就是指:一个抽象类中,有一个主方法,再定义1...n个方法,可以是抽象的,也可以是实际的方法,定义一个类,继承该抽象类,重写抽象方法,通过调用抽象类,实现对子类的调用,先看个关系图:就是在AbstractCalculator类中定义一个主方法calculate,calculate()调用spilt()等,Plus转载 2013-09-27 08:24:41 · 678 阅读 · 0 评论 -
Java开发中的23种设计模式之五:原型模式(Prototype)
5、原型模式(Prototype)原型模式虽然是创建型的模式,但是与工程模式没有关系,从名字即可看出,该模式的思想就是将一个对象作为原型,对其进行复制、克隆,产生一个和原对象类似的新对象。本小结会通过对象的复制,进行讲解。在Java中,复制对象是通过clone()实现的,先创建一个原型类:[java] view plaincopypublic class Prototy转载 2013-09-26 13:37:59 · 698 阅读 · 0 评论 -
Java开发中的23种设计模式之四:建造者模式(Builder)
4、建造者模式(Builder)工厂类模式提供的是创建单个类的模式,而建造者模式则是将各种产品集中起来进行管理,用来创建复合对象,所谓复合对象就是指某个类具有不同的属性,其实建造者模式就是前面抽象工厂模式和最后的Test结合起来得到的。我们看一下代码:还和前面一样,一个Sender接口,两个实现类MailSender和SmsSender。最后,建造者类如下:[java] vie转载 2013-09-26 13:35:06 · 673 阅读 · 0 评论 -
设计模式6大原则之迪米特法则(Law Of Demeter)
迪米特法则(Law of emeter)定义:一个对象应该对其他对象保持最少的了解。问题由来:类与类之间的关系越密切,耦合度越大,当一个类发生改变时,对另一个类的影响也越大。解决方案:尽量降低类与类之间的耦合。 自从我们接触编程开始,就知道了软件编程的总的原则:低耦合,高内聚。无论是面向过程编程还是面向对象编程,只有使各个模块之间的耦合尽量的低,才能提高代码的转载 2013-09-27 11:06:40 · 898 阅读 · 0 评论 -
设计模式6大原则之单一职责原则(Single Responsibility Principle)
单一职责原则(Single Responsibility Principle) 定义:不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。 问题由来:类T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障。 解决方案:遵循单一职责原则。分别建立两个类T1、T2,使T1完成职责P1功转载 2013-09-27 11:13:30 · 780 阅读 · 0 评论 -
什么是设计模式?
设计模式(Design Patterns) ——可复用面向对象软件的基础设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化转载 2013-09-26 13:25:31 · 670 阅读 · 0 评论 -
Java开发中的23种设计模式之二十三:解释器模式(Interpreter)
23、解释器模式(Interpreter)解释器模式是我们暂时的最后一讲,一般主要应用在OOP开发中的编译器的开发中,所以适用面比较窄。Context类是一个上下文环境类,Plus和Minus分别是用来计算的实现,代码如下: [java] view plaincopypublic interface Expression { public int转载 2013-09-27 08:27:59 · 796 阅读 · 0 评论 -
Java开发中的23种设计模式之三:单例模式(Singleton)
3、单例模式(Singleton)单例对象(Singleton)是一种常用的设计模式。在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在。这样的模式有几个好处:1、某些类创建比较频繁,对于一些大型的对象,这是一笔很大的系统开销。2、省去了new操作符,降低了系统内存的使用频率,减轻GC压力。3、有些类如交易所的核心交易引擎,控制着交易流程,如果该类可以创建多个的转载 2013-09-26 13:32:07 · 658 阅读 · 0 评论 -
Java开发中的23种设计模式之十二:享元模式(Flyweight)
12、享元模式(Flyweight)享元模式的主要目的是实现对象的共享,即共享池,当系统中对象多的时候可以减少内存的开销,通常与工厂模式一起使用。FlyWeightFactory负责创建和管理享元单元,当一个客户端请求时,工厂需要检查当前对象池中是否有符合条件的对象,如果有,就返回已经存在的对象,如果没有,则创建一个新对象,FlyWeight是超类。一提到共享池,我们很容易联想到Jav转载 2013-09-26 13:50:08 · 675 阅读 · 0 评论 -
Java开发中的23种设计模式之十一:组合模式(Composite)
11、组合模式(Composite)组合模式有时又叫部分-整体模式在处理类似树形结构的问题时比较方便,看看关系图:直接来看代码:[java] view plaincopypublic class TreeNode { private String name; private TreeNode parent; privat转载 2013-09-26 13:48:57 · 1278 阅读 · 0 评论 -
面向服务的体系结构(SOA) 之 目标与核心概念
什么是SOA?常常听到人们拿OOP和SOA一起来说事,诸如SOA是否可以代替面向对象(OOP)或者两者比哪个更加有优势?直接回答有难度举个例子可能显得答案更容易理解。小孩子问你该认真写作业呢?还是高考的时候报理科呢?摸不到头脑吧,根本就毫无意义的风牛马不相及的问题。(确切的说OOP和SOA还是有一些关联的,就像好好学习可以在高考的时候报理科是一样的。)面向服务的体系结构(Servi转载 2013-09-24 10:48:31 · 1018 阅读 · 0 评论 -
深入解读ESB与SOA的关系
时至今日,SOA的概念渐渐清晰了。 有关ESB的概念,已经吵了好多年了,还是没有定论。 我个人认为,ESB本来就是抽象的概念,而且内涵丰富,在不同的场合含义不同。因此应该从不同的角度来认识。 一、SOA和ESB一直是没有明确概念的两个缩略词 原因是这两个词包含的内涵太丰富了,无法用一两句话说清楚,并且,这个词在不同的地方含义也有所不同。 SOA---转载 2013-09-24 09:27:52 · 1536 阅读 · 1 评论 -
IBM SOA 标准
本文介绍 IBM 如何开发和使用 SOA 参考架构,帮助客户增加业务灵活性和 IT 灵活性。SOA RA 参考架构被用于帮助组织通过业务集成(特别是符合其独特 SOA 服务目标的服务集成)来实现高级业务敏捷性和 IT 灵活性。IBM 还结合使用 SOA 参考架构和 Cloud 参考架构来帮助组织定义其云解决方案。简介面向服务架构 (Service Oriented Architecture转载 2013-10-09 10:12:38 · 2101 阅读 · 0 评论 -
SOA,现在进行时
SOA现在正热得"烫手"。 对于SOA,目前我听到有两种说法:一种讲它是"颠覆性的革命架构",一种是"谨慎观望"。但无疑,SOA最近几年发展得非常快,各主要软件厂商纷纷高调跟进,关于SOA的报道可以说是不绝于耳。对"SOA热",程序员们有的兴奋和期待,有的则感到困惑,最近我在金蝶中间件于广州、上海等城市举行的"Java俱乐部"上和程序员们交流时,他们或是以一种朝圣者的表情说:"以前面向对象的转载 2013-09-24 09:13:54 · 865 阅读 · 0 评论 -
Oracle SOA 产品战略
上个月,Oracle集成产品管理副总裁David Shaffer,描述了Oracle-BEA产品的战略和SOA/BPM路线图。援引David的观点,Oracle关注三个主要的SOA市场发展热点:面向服务的架构(SOA) 业务流程管理(BPM) 治理(Governance) 而它们又基于三个支撑部分:Oracle数据整合器(ODI) 事件驱动的架构(EDA) 应用服务转载 2013-10-09 10:53:59 · 841 阅读 · 0 评论 -
微软 SOA 路线图
当和那些研究面向服务架构以及正在研究微软进入SOA策略的分析人士谈话的时候,有一个词能很好的描述微软的出现:“不同”。下面达内IT培训集团为大家介绍一下具体内容。 微软正在操作一个与其他主要的SOA软件厂商截然不同的SOA世界。这里的主要的SOA软件厂商是指IBM,BEA Systems 公司以及最近刚刚合并的WebMethods/Software AG公司。分析人士如是说。“过去他们总是成转载 2013-10-09 10:43:22 · 1390 阅读 · 0 评论 -
设计模式6大原则之接口隔离原则(Interface Segregation Principle)
接口隔离原则(Interface Segregation Principle) 定义:客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。 问题由来:类A通过接口I依赖类B,类C通过接口I依赖类D,如果接口I对于类A和类B来说不是最小接口,则类B和类D必须去实现他们不需要的方法。 解决方案:将臃肿的接口I拆分为独立的几个接口,类A和类C分别与他们需要的接转载 2013-10-07 16:32:03 · 739 阅读 · 0 评论 -
设计模式6大原则之开闭原则(Open Close Principle)
开闭原则(Open Close Principle) 定义:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。 问题由来:在软件的生命周期内,因为变化、升级和维护等原因需要对软件原有代码进行修改时,可能会给旧代码中引入错误,也可能会使我们不得不对整个功能进行重构,并且需要原有代码经过重新测试。 解决方案:当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改转载 2013-10-07 16:32:31 · 1024 阅读 · 0 评论 -
SOA领域建模,用OOD还是SOA方法?
近日,在Gervas Douglas的SOA邮件讨论组的OO和SOA两大阵营间展开了一场讨论,探讨的话题包括领域建模(Domain Model)、消息格式和服务设计等。讨论结果得出了几条适用于大多数SOA实施的重要原则:面向服务的建模技术,譬如DOSOM(面向领域的服务建模),是识别候选业务服务的第一步,此处领域是根据业务的功能结构清晰地划分的。定义完业务服务契约(Contract)之转载 2013-09-24 10:10:07 · 733 阅读 · 0 评论 -
设计模式6大原则之依赖倒置原则(Dependence Inversion Principle)
依赖倒置原则(Dependence Inversion Principle) 定义:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。 问题由来:类A直接依赖类B,假如要将类A改为依赖类C,则必须通过修改类A的代码来达成。这种场景下,类A一般是高层模块,负责复杂的业务逻辑;类B和类C是低层模块,负责基本的原子操作;假如修改类A,会给程序带来不必要的转载 2013-10-07 16:32:15 · 770 阅读 · 0 评论 -
Java开发中的23种设计模式:创建类模式总结篇
创建类模式主要关注对象的创建过程,将对象的创建过程进行封装,使客户端可以直接得到对象,而不用去关心如何创建对象。创建类模式有5种,分别是:单例模式:用于得到内存中的唯一对象。工厂方法模式:用于创建复杂对象。抽象工厂模式:用于创建一组相关或相互依赖的复杂对象。建造者模式:用于创建模块化的更加复杂的对象。原型模式:用于得到一个对象的拷贝。为什么需要创建性模式 首先,在编程转载 2013-10-07 16:32:19 · 784 阅读 · 0 评论 -
面向服务的体系结构(SOA) 之 ESB介绍及职责
企业服务总线(Enterprise Service Bus)是SOA的基础设施,之所以这么说是因为要达到SOA的目标(增强灵活性)就必须有调用服务的方法,ESB的存在有效的保证了消费者能够调用供应者提供的服务。网上有很多对ESB不同的理解,其实这取决于实现ESB方式。对于ESB来说具体的实现方式不是固定的,但是核心思想(主要的作用)是一致的。下面将从如下几个方面阐述笔者对ESB的理解转载 2013-09-24 10:52:03 · 886 阅读 · 0 评论