![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
编程模式
文章平均质量分 79
crazzy_lp
这个作者很懒,什么都没留下…
展开
-
编程模式---“开--闭”原则(OCP)
经典力学的基石是牛顿三大定律。而面向对象的可复用设计(OOD)的第一块基石,便是“开--闭”原则(Open-Closed principle,缩写为OCP)。一、什么是“开闭”原则? “开--闭”原则讲的是:一个软件实体应当对扩展开放,对修改关闭。英文的原文是:Software entities should be open for extension,but c...原创 2014-07-01 23:49:07 · 247 阅读 · 0 评论 -
代理模式(Proxy)
代理模式是对象的结构模式,代理模式给某一个对象提供一个代理对象,并由代理对象控制原对象的引用。换言之,就是一个人或者一个机构代表另一个人或者另一个机构采取行动。在一些情况下,一个客户不想或不能直接引用一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。一、代理的种类①远程代理:为一个位于不同的地址空间的对象提供一个局域代表对象。这个不同的地址空间可以是本机器中,也可...原创 2014-07-16 21:00:14 · 118 阅读 · 0 评论 -
适配器模式(Adapter)
适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。 在大规模的系统开发过程中,我们常常碰到诸如以下这些情况:我们需要实现某些功能,这些功能已有还不太成熟的一个或多个外部组件,如果我们自己重新开发这些功能会花费大量时间;所以很多情况下会选择先暂时使用外部组件,以后再考虑随时替换。但这样一来,会带来一个问题,...原创 2014-07-15 23:10:07 · 134 阅读 · 0 评论 -
原始模型模式(prototype)
原始原型模式属于对象创建模式。通过给出一个原型对象来指明所要创建的对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象,这就是原始模型模式。例如,在西游记中,孙悟空可以揪下一把毫毛,变出多个孙悟空,和他本身几乎一模一样,换言之,孙悟空可以根据自己的形象,复制出很多”身外之身“类,这就相当于采用了原始原型模式。 在Java语言中构件模型直接支持原始模型模式。所有的...原创 2014-07-14 23:31:46 · 332 阅读 · 0 评论 -
构造模式(Builder)
构造模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。具体的操作过程是:构造模式利用一个导演者对象和具体构造者对象一个一个的构造出所有的零件,从而构造出完整的产品对象;并且构造者模式将产品的结构和产品的零件构造过程对客户端隐藏起来,把对构造过程进行指挥的责任和具体构造者零件的责任分割开来,达到责任划分和封装的目的。 应当指出的是,这些零件有可能...原创 2014-07-14 20:49:25 · 294 阅读 · 0 评论 -
多例模式
多例模式中的多例类可以有多个实例,而且多例类必须自己创建、管理自己的实例,并向外界提供自己的实例。一、多例模式的特点 所谓的多例模式,实际上就是单例模式的自然推广。作为对象的创建模式,多例模式或多例类有以下特点:①多例类可有多个实例;②多例类必须自己创建、管理自己的实例,并向外界提供自己的实例;二、多例模式实例1、有上限的多例类 一个实例数目有上限...原创 2014-07-14 11:32:21 · 304 阅读 · 0 评论 -
单例模式
单例模式确保某一个类只能有一个实例,而且自行实例化并向整个系统提供这个实例。这个类成为单例类。单例模式有三个要点:①某个类只能有一个实例;②它必须自行创建这个实例;③它必须自行向整个系统提供这个实例。一、在什么情况下使用单例模式 使用单例模式有一个必要的条件:在一个系统要求一个类只有一个实例时才应当使用单例模式。反过来说,如果一个类可以有几个实例共存,那么就没有表要使...原创 2014-07-10 22:10:03 · 167 阅读 · 0 评论 -
工厂模式
一、什么是工厂模式 工厂模式专门负责将大量有共同接口的类实例化。工厂模式可以动态决定将那个类实例化,不必事先知道每次要实例化那个类。工厂模式有一下几种形态: ①简单工厂模式:又称为静态工厂方法模式,是不同的工厂方法模式的一个特殊实现。在简单工厂模式中,一个工厂类处于对产品类实例化的中心位置上,它知道每一个产品,他决定那个产品类应当被实例化。这个模式的优点是允许客户端相...原创 2014-07-10 21:08:12 · 179 阅读 · 0 评论 -
编程模式---迪米特法则(LoD)
迪米特法则又叫最少知识原则,就是说一个对象应当对其他对象有尽可能少的了解。 下面看看迪米特法则的其他表述方法:①只与你直接的朋友通信;②不要与陌生人说话;③每一个软件单位对其他的单位都只有最少的知识,而且局限于那些与本单位密切相关的软件单位。一、狭义迪米特法则 如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。如果其中的一个类需要调用另一...原创 2014-07-08 23:06:07 · 264 阅读 · 0 评论 -
编程模式---合成/聚合复用原则(CARP)
合成/聚合复用原则经常又叫做合成复用原则。合成/聚合复用原则就是在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分:新的对象通过向这些对象的委派达到复用已有功能的目的。简短的表述是:要尽量使用合成/聚合,尽量不适用集成。一、合成和聚合的区别 合成和聚合均是关联关系的特殊种类。聚合用来表示“拥有”关系或者整体与部分的关系;而合成则用来表示一种强的多的“拥有”关...原创 2014-07-07 00:12:34 · 261 阅读 · 0 评论 -
编程模式---接口隔离原则(ISP)
接口隔离原则讲的是:使用多个专门的接口比使用单一的总接口要好。换言之,从一个客户类的角度来讲:一个类对另外一个类的依赖性应当是建立在最小的接口上的。一、什么是接口隔离原则 人们常说的“接口”往往有两种含义,一种是狭义上的,指的是Java语言中的有严格定义的interface结构;另一种则是广义上的,指的是一个类型所具有的方法特征的集合,但这仅是一种逻辑上的抽象。对于这两种...原创 2014-07-06 18:31:22 · 234 阅读 · 0 评论 -
编程模式---依赖倒转原则(DIP)
实现“开-闭”原则的关键是抽象化,并且从抽象化导出具体化实现。如果说“开-闭”原则是面向对象设计的目标的话,依赖倒转原则就是这个面向对象设计的主要机制。依赖倒转原则讲的是:要依赖于抽象类,不要依赖于具体。一、为何而“倒转” 简单的说,传统的过程性系统的设计办法倾向于使高层次的模块依赖于低层次的模块:抽象层次依赖于具体层次。倒转原则是要把这个错误的依赖关系倒转过来,这就是“...原创 2014-07-06 00:03:45 · 135 阅读 · 0 评论 -
编程模式---里氏代换原则(LSP)
从“开-闭”原则中可以看出面向对象涉及的重要原则是创建抽象化,并且从抽象化导出具体化。具体化可以给出不同的版本,每一个版本都给出不同的实现。从抽象化到具体化的导出要使用继承关系和这里要引入的里氏代换原则。一、什么是里氏代换原则 里氏代换原则描述如下:如果对每一个类型为T1的对象o1,都有类型为T2的对象o2,使得以T1定义的所有程序P在所有的对象o1都替换成o2时,程...原创 2014-07-05 19:39:04 · 185 阅读 · 0 评论 -
编程模式--再论抽象类
在java中有两种类:一种是具体类,另一种是抽象类。具体类可以实例化,抽象类不可以实例化。一、什么是抽象类 抽象类仅提供一个类型的部分实现。抽象类可以有实例变量,以及一个或多个构造函数。抽象类可以同时有抽象方法和具体方法。 一个抽象类不会有实例,这些构造函数不能被客户端调用来实例化抽象类。一个抽象类的构造函数被其子类调用,从而使一个抽象类的所有子类都...原创 2014-07-03 23:53:01 · 73 阅读 · 0 评论 -
编程模式--再论java接口
如果可以动态的将一个构件移走,并以另一个构件取代之,那么这种构件就是可插入构件。接口是实现构件的可插入性的关键。一、什么是接口 一个java接口是一些方法特征的集合,这些方法特征当然来自于具体方法,但是他们一般都是来自于一些在系统中不断出现的方法。一个接口只有方法的特征,而没有方法的实现,这些方法在不同的地方被实现,可以具有完全不同的行为。 在人们讲到“...原创 2014-07-02 23:48:23 · 96 阅读 · 0 评论 -
软件的可维护性与可复用性
通常认为,一个易于维护的系统,就是复用率较高的系统;而一个复用性较好的系统,就是一个易于维护的系统。但是实际上,可维护性和可复用性是两个独立的目标,就像两只奔跑的兔子一样,并不总是方向一致的。 对于面向对象的软件系统设计来说,在支持可维护性的同时,提高系统的可复用性是一个核心的问题。一、软件系统的可维护性 软件开发是一个比较快速的过程,一般只需要半年时间。...原创 2014-07-16 21:33:37 · 1153 阅读 · 0 评论