java设计模式之代理模式

在有些情况下,客户不能或者不想直接访问另一个对象,这时需要找一个中介帮忙来完成某项任务,这个中介就是代理对象.比如租房子,不一定直接去找现房,可以找中介帮忙,找工作可以通过猎头等等.

阅读更多

java设计模式之原型模式

在有些系统中,存在大量的相同或相似对象的创建问题,如果用传统的构造函数来创建对象,会比较复杂且耗时耗资源,用原型模式生成对象就很高效,就像孙悟空拔下猴毛变出很多孙悟空一样简单。

阅读更多

java设计模式之建造者模式

在软件的开发过程中,有时需要创建一个复杂的对象,这个对象通常由多个子部件按照一定的步骤组合而成。例如计算机有CPU,主板,内存,硬盘,显卡,机箱,显示器等组装而成,采购员不可能自己去组装计算机,而是将计算机的配置要求告诉给计算机销售,销售安排技术人员去组装计算机,然后交付。
生活中有很多这样的例子,比如房屋的建造,其空间,装修,家具等特性都有所差异,汽车的各个配件等等。
以上提到的产品都是由多个部件构成,每个部件都可以灵活选择,但是其创建的步骤都大同小异。这类产品可以用建造者模式很好的描述出产品的创建过程。

阅读更多

java设计模式之单例模式

单例模式是设计模式中最简单的模式之一。通常,普通类的构造函数是公有的,外部类可以通过 new 构造函数()来生成多个实例,但是,如果将类的构造函数设置为私有,外部类就无法调用该构造函数,也就无法生成多个实例。这时该类自身必须定义一个静态私有实例,并向外提供一个静态的公有函数用于创建或获取该静态私有实例。

阅读更多

java设计模式之观察者模式

在现实世界中,很多对象并不是独立存在的,其中一个对象的行为发生改变可能会导致一个或者多个的其他对象的行为也发生改变。
比如微信公众号,不定时的发布一些消息,关注公众号就可以收到消息,取消关注就收不到消息。还有当我们开车到路口时,
遇到红灯会停下,绿灯则通行等等
在软件世界也是这样,比如图表中的数据与折线图,饼状图,柱状图之间的关系,MVC模式中的模型与视图的关系,比如发布订阅模式等等。

阅读更多

java设计模式之工厂模式

在现实生活中社会分工越来越细,越来越专业化。各种产品有专门的工厂生产,彻底告别了自给自足的小农经济时代,这大大缩短了产品的生产周期,提高了生产效率。
同样,在软件开发中能否做到软件对象的生产和使用相分离呢?
能否在满足“开闭原则”的前提下,客户随意增删或改变对软件相关对象的使用呢?

阅读更多

java设计模式之策略模式

在现实生活中常常遇到实现某种目标存在多种方案可供选择的情况,例如出行旅游可以乘坐火车,飞机,或者自驾等。
在软件开发中,也常常遇到类似的情况,当实现某个功能存在多种算法或者策略,我们可以根据不同的条件选择不同的算法来实现该功能。比如排序算法,我们可以选择冒泡排序,选择排序,插入排序,二叉树排序等
如果使用多重条件转移语句实现(即硬编码),不但使条件语句变得复杂,而且增加了代码的复杂程度,不易维护,违背开闭原则。采用策略模式能很好的解决这个问题。

阅读更多

UML中的类图及常见类图关系

UML(统一建模语言,Unified Modeling Language),是用来设计软件蓝图的可视化建模语言。从目标系统的不同角色出发,分为用例图,类图,对象图,状态图,活动图,时序图,协作图,构件图,部署图等9种图
最近重新研究了设计模式,在整理总结时,用到了类图,发现经常混淆类图的关系,所以特意做下整理。

阅读更多