jeans chen
we've got them by the balls

随笔分类 -  design pattern

1 2 下一页
ZT 创建类模式总结篇
摘要:创建类模式总结篇 分类: 设计模式 2012-03-26 09:03 7320人阅读 评论(11) 收藏 举报编程优化设计模式任务创建类模式主要关注对象的创建过程,将对象的创建过程进行封装,使客户端可以直接得到对象,而不用去关心如何创建对象。创建类模式有5种,分别是:单例模式:用于得到内存中的唯一对象。工厂方法模式:用于创建复杂对象。抽象工厂模式:用于创建一组相关或相互依赖的复杂对象。建造者模式:用于创建模块化的更加复杂的对象。原型模式:用于得到一个对象的拷贝。为什么需要创建性模式 首先,在编程中,对象的创建通常是一件比较复杂的事,因为,为了达到降低耦合的目的,我们通常采用面向抽象编程的... 阅读全文
posted @ 2013-12-25 10:33 jeans chen 阅读(137) 评论(0) 推荐(0)
Prototype Pattern
摘要:讨论:Prototype 模式通过复制原型(Prototype)而获得新对象创建的功能,这里 Prototype 本身就是“对象工厂”(因为能够生产对象),实际上 Prototype 模式和 Builder 模式、AbstractFactory 模式都是通过一个类(对象实例)来专门负责对象的创建工作(工厂对象),它们之间的区别是:Builder 模式重在复杂对象的一步步创建(并不直接返回对象),AbstractFactory 模式重在产生多个相互依赖类的对象,而 Prototype 模式重在从自身复制自己创建新类。参考http://blog.csdn.net/zhengzhb/article/ 阅读全文
posted @ 2013-12-25 10:27 jeans chen 阅读(191) 评论(0) 推荐(0)
ZT UML 类与类之间的关系
摘要:1、聚合关系是关联关系的一种,是强的关联关系。 2、聚合是整体和部分之间的关系,例如汽车由引擎、轮胎以及其它零件组成。3、聚合关系也是通过成员变量来实现的。但是,关联关系所涉及的两个类处在同一个层次上,而聚合关系中,两个类处于不同的层次上,一个代表整体,一个代表部分。 4、关联与聚合仅仅从 Java 或 C++ 语法上是无法分辨的,必须考察所涉及的类之间的逻辑关系。class 引擎 { };class 轮胎 { };class 汽车 {protected: 引擎 engine; 轮胎 tyre[4];};3、合成关系 (composition):1、合成关系是关联关系的一种,是比聚合关系还要. 阅读全文
posted @ 2013-12-24 15:56 jeans chen 阅读(404) 评论(0) 推荐(0)
zt 设计模式六大原则(3):依赖倒置原则
摘要:下面说法对不对?父类将算法(逻辑)封装起来,子类实现细节:这个就叫DIP(依赖倒置:Dependency Inversion Principles),模板模式就是这个原则的实现。如果在父类中加一个this->那就直观多了。zt 设计模式六大原则(3):依赖倒置原则 分类: 设计模式 2012-02-24 08:46 25625人阅读 评论(67) 收藏 举报设计模式stringclass编程setterinterface 定义:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。问题由来:类A直接依赖类B,假如要将类A改为依赖类C,则必须通过修改类A的 阅读全文
posted @ 2013-12-24 11:04 jeans chen 阅读(175) 评论(0) 推荐(0)
ZT 设计模式六大原则(1):单一职责原则
摘要:zt 设计模式六大原则(1):单一职责原则 分类: 设计模式 2012-02-21 09:52 25059人阅读 评论(65) 收藏 举报设计模式stringclass编程(THERE SHOULD NEVER BE MORE THAN ONE REASON FOR A CLASS TO CHANGE) 定义:不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。问题由来:类T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障。解决方案:遵循单一职责原则。分别建立两个类T1、T2,使T1完成职责... 阅读全文
posted @ 2013-12-24 10:54 jeans chen 阅读(174) 评论(0) 推荐(0)
ZT 设计模式六大原则(6):开闭原则
摘要:ZT 设计模式六大原则(6):开闭原则 分类: 设计模式 2012-02-27 08:48 24870人阅读 评论(72) 收藏 举报设计模式扩展框架编程测试定义:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。问题由来:在软件的生命周期内,因为变化、升级和维护等原因需要对软件原有代码进行修改时,可能会给旧代码中引入错误,也可能会使我们不得不对整个功能进行重构,并且需要原有代码经过重新测试。解决方案:当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变化。 开闭原则是面向对象设计中最基础的设计原则,它指导我们如何建立稳定灵活的系统。开闭原则可能... 阅读全文
posted @ 2013-12-23 18:20 jeans chen 阅读(184) 评论(0) 推荐(0)
ZT 设计模式六大原则(5):迪米特法则
摘要:转贴: 设计模式六大原则(5):迪米特法则 原帖子的后续评论里面很多值得仔细去看 切记!像21楼21楼 chenshufei2 2012-09-23 12:47发表 [回复] 上个例子,就是方法的界定。通常从现实中可以抽取多个对象名词,又有多个动作方法。到底这些动作应该是哪个对象的,我个人觉得,要看动作操作的数据是谁的,那谁就应该负责提供方法。像上面的打印子公司的员工ID,只有子公司自己才知道他的员工ID,所以打印子公司的ID,理应由子公司处理。分类: 设计模式 2012-02-27 08:40 18855人阅读 评论(35) 收藏 举报设计模式liststringclass编程定义:一个.. 阅读全文
posted @ 2013-12-23 18:19 jeans chen 阅读(191) 评论(0) 推荐(0)
ZT 设计模式六大原则(4):接口隔离原则
摘要:设计模式六大原则(4):接口隔离原则 分类: 设计模式 2012-02-27 08:32 17948人阅读 评论(21) 收藏 举报设计模式classinterfacecstring框架 定义:客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。问题由来:类A通过接口I依赖类B,类C通过接口I依赖类D,如果接口I对于类A和类B来说不是最小接口,则类B和类D必须去实现他们不需要的方法。解决方案:将臃肿的接口I拆分为独立的几个接口,类A和类C分别与他们需要的接口建立依赖关系。也就是采用接口隔离原则。举例来说明接口隔离原则:(图1 未遵循接口隔离原则的设计) 这个图的... 阅读全文
posted @ 2013-12-23 18:18 jeans chen 阅读(172) 评论(0) 推荐(0)
ZT 设计模式六大原则(2):里氏替换原则
摘要:设计模式六大原则(2):里氏替换原则 分类: 设计模式 2012-02-22 08:46 23330人阅读 评论(41) 收藏 举报设计模式class扩展string编程2010 肯定有不少人跟我刚看到这项原则的时候一样,对这个原则的名字充满疑惑。其实原因就是这项原则最早是在1988年,由麻省理工学院的一位姓里的女士(Barbara Liskov)提出来的。定义1:如果对每一个类型为 T1的对象 o1,都有类型为 T2 的对象o2,使得以 T1定义的所有程序 P 在所有的对象 o1 都代换成 o2 时,程序 P 的行为没有发生变化,那么类型 T2 是类型 T1 的子类型。定义2:所有引用... 阅读全文
posted @ 2013-12-23 18:16 jeans chen 阅读(219) 评论(0) 推荐(0)
ZT Abstract Factory
摘要:实际上,Abstract Factory 模式是为创建一组(有多类)相关或依赖的对象提供创建接口,而 Factory 模式正如我在相应的文档中分析的是为一类对象提供创建接口或延迟对象的创建到子类中实现。并且可以看到,AbstractFactory 模式通常都是使用 Factory 模式实现(ConcreteFactory1)。 阅读全文
posted @ 2013-12-23 17:58 jeans chen 阅读(135) 评论(0) 推荐(0)
ZT Factory Pattern
摘要:图中的虚线箭头表示依赖关系讨论:Factory 模式在实际开发中应用非常广泛,面向对象的系统经常面临着对象创建问题:要创建的类实在是太多了。而 Factory 提供的创建对象的接口封装(第一个功能),以及其将类的实例化推迟到子类(第二个功能)都部分地解决了实际问题。一个简单的例子就是笔者开开发XXX,采用 Factory 模式后系统可读性性和维护都变得elegant 许多。Factory 模式也带来至少以下两个问题:1)如果为每一个具体的 ConcreteProduct 类的实例化提供一个函数体,那么我们可能不得不在系统中添加了一个方法来处理这个新建的 ConcreteProduct,这样 F 阅读全文
posted @ 2013-12-23 17:47 jeans chen 阅读(186) 评论(0) 推荐(0)
Singleton
摘要:参考 http://blog.csdn.net/zhengzhb/article/details/7331369单例模式应该是23种设计模式中最简单的一种模式了。它有以下几个要素:私有的构造方法指向自己实例的私有静态引用以自己实例为返回值的静态的公有的方法代码说明:Singleton 模式的实现无须... 阅读全文
posted @ 2013-12-23 16:35 jeans chen 阅读(238) 评论(0) 推荐(0)
几本电子书比较
摘要:################################《51CTO下载-24种设计模式介绍与6大设计原则》笑话噱头挺多,但是不深,唯一的好处是可以用笑话记住里面的代码。且里面有的UML图都画错了。#####《C++设计模式 23种设计模式》好书!详细比较了每种模式的适应场合,各个模式的优缺点对比最开始看设计模式书的时候钟情于前者,后来看多了,了解了相关的UML和C++语法的知识后,果断后者。 阅读全文
posted @ 2013-12-23 15:44 jeans chen 阅读(182) 评论(0) 推荐(0)
ZT 3.1 依赖倒置原则的定义
摘要:设计模式精解-GoF 23 种设计模式解析附 C++实现源码http://www.mscenter.edu.cn/blog/k_eckelP58Template 模式获得一种反向控制结构效果,这也是面向对象系统的分析和设计中一个原则 DIP(依赖倒置:Dependency Inversion Principles)。其含义就是父类调用子类的操作(高层模块调用低层模块的操作),低层模块实现高层模块声明的接口。这样控制权在父类(高层模块),低层模块反而要依赖高层模块。3.1 依赖倒置原则的定义 http://www.cnblogs.com/cbf4life/archive/2009/12/15/1 阅读全文
posted @ 2013-12-23 13:43 jeans chen 阅读(164) 评论(0) 推荐(0)
ZT 接口和实现分离
摘要:什么叫接口和实现分离,如何实现 [问题点数:20分,结帖人heronism] http://bbs.csdn.net/topics/310212385http://blog.csdn.net/starlee/article/details/610825 C++中接口与实现分离的技术 这两个里似乎是说的是i”Design pattern 里的pImpl不就是干这个的吗?“ 阅读全文
posted @ 2013-12-23 11:36 jeans chen 阅读(172) 评论(0) 推荐(0)
ZT 类与类之间的四种关系
摘要:csdn上一个好贴子:http://bbs.csdn.net/topics/390646332类与类之间的四种关系1.依赖(Dependency) 类A在类B中作为一个成员函数的参数或者是返回值A的析构不在B中2.关联(Association)类A在类B中作为一个成员变量析构不在B中3.聚合(Aggregation) 类A作为类B中的一个成员变量析构在B中可以在B中的任何周期被析构就像你的头发你挂了头发也就不存在了但是你活着的时候头发没了对你没啥影响聚合是关联关系的一种特例,它体现的是整体与部分的关系,即has-a的关系。此时整体与部分之间是可分离的,它们可以具有各自的生命周期,部分可以属于. 阅读全文
posted @ 2013-12-23 10:46 jeans chen 阅读(375) 评论(0) 推荐(0)
Template Pattern & Strategy Pattern
摘要:详细见《C++设计模式 23种设计模式.pdf 55页》在面向对象系统的分析与设计过程中经常会遇到这样一种情况:对于某一个业务逻辑(算法实现)在不同的对象中有不同的细节实现,但是逻辑(算法)的框架(或通用的应用算法)是相同的。Template 提供了这种情况的一个实现框架。Template 模式是采用继承的方式实现这一点:将逻辑(算法)框架放在抽象基类中,并定义好细节的接口,子类中实现细节。【注释 1】Strategy 模式解决的是和 Template 模式类似的问题,但是 Strategy 模式是将逻辑(算法)封装到一个类中,并采取组合(委托)的方式解决这个问题。模式选择:Template 阅读全文
posted @ 2013-11-19 17:02 jeans chen 阅读(410) 评论(0) 推荐(0)
ZT 怎么样才算熟悉设计模式? [问题点数:40分,结帖人jiaoyun007]
摘要:http://bbs.csdn.net/topics/390448668?page=1#post-394406161 近日面试,因为个人简历里有“熟悉设计模式”这句话,面试官边侃侃发问了:什么是装饰模式呢,本人回答用过简单工厂模式,其他的看过,没有记住,他就笑了笑,感觉是觉得我那句话说大了假若各位老大是面试官,这里想问下,怎么样才算熟悉设计模式呢,23种都很了解倒背如流才算么多谢了! 分享到: ... 阅读全文
posted @ 2013-10-11 17:31 jeans chen 阅读(197) 评论(0) 推荐(0)
command 模式
摘要:详细见电子书 阅读全文
posted @ 2013-08-26 14:33 jeans chen 阅读(176) 评论(0) 推荐(0)
Observer模式
摘要:见电子文档。李斯 韩非子。package com.cbf4life.advance2;/*** @author cbf4Life cbf4life@126.com* I'm glad to share my knowledge with you all.* 这个Client就是我们,用我们的视角看待这段历史*/public class Client {public static void main(String[] args) {//三个观察者产生出来Observer liSi = new LiSi();Observer wangSi = new WangSi();Observer l 阅读全文
posted @ 2013-08-23 15:52 jeans chen 阅读(223) 评论(0) 推荐(0)

1 2 下一页