工作这么多年,以前也接触过多次设计模式,但终归是用到后才去分析,没有形成体系。市面上设计模式的书籍质量也参差不齐,阎宏那本《java与模式》不错,但有故弄玄虚之感。最近看到《研磨设计模式》一书,开始是从书评得到此书不错,后来看到作者的博客,初看了几个模式的讲解,受益非浅。很多模式的原理讲得通透,应用案例也有极强的针对性。个人认为是学习设计模式非常好的教程。所以
原创
2011-05-06 10:17:09
796阅读
点赞
1评论
首先说个题外话,《研磨设计模式》这本书占据很多设计模式书籍排行榜的榜首,但是这本书只印刷了一次,导致此书绝版,所以在淘宝和京东的购买价格翻了3倍 【简单工厂模式】 1.客户端根本就不应该知道具体的实现类是Impl,其实就是为了封装实现类,因而在具体实现类和客户端之间增加了一个工厂类,工厂类的作用就是
转载
2019-04-26 15:12:00
101阅读
2评论
定义:提供一个创建对象实例的功能,而无需关心其具体的实现,被创建的实I接口对象,然后面向API接口编程
原创
2022-08-26 07:14:13
120阅读
1.设计模式是什么模式是什么。模:就是模型、模板的意思;式:就是方式、方法的意思。模式:可以作为/模型或模板/的/方式或方法/。设计模式是什么。设计模式:是指在软件开发中,经过验证的,用于解决在特定环境下、重复重现的、特定问题的解决方案。1.设计模式是解决方案。解决方案:就是解决方法,亦即是/解决问题/的方式或方法。2.设计模式是特定问题的解决方案。限制“特定问题”,通常一个设计模式仅仅/解决/某
原创
2013-06-17 11:55:46
1201阅读
1.定义动态的给一个对象添加一个额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。2.解决问题——奖金计算不用模式的解决方案public class Prize {
public double calcPrize(String user, Date begin, Date end) {
double prize = 0.0;
// 计算当月业务奖
原创
2013-06-26 17:05:13
1107阅读
21.1 场景问题21.1.1 读取配置文件 考虑这样一个实际的应用,维护系统自定义的配置文件。几乎每个实际的应用系统都有与应用自身相关的配置文件,这个配置文件是由开发人员根据需要自定义的,系统运行时会根据配置的数据进行相应的功能处理。 系统现有的配置数据很简单,主要是JDBC所需要的数据,
原创
2013-12-06 09:43:31
860阅读
什么是组件? 从设计上讲,组件就是能完成一定功能的封装体。
原创
2021-08-24 15:01:48
155阅读
请搜索《跟着cc学设计》获取更多设计内容。
前言
创作背景
软件开发越来越复杂,对软件设计的要求也越来越高,而软件设计和架构的入门功夫就是深入理解和掌握设计模式,因此,设计模式的重要性不言而喻。
很多朋友也认识到了设计模式的重要性,也看了很
原创
2012-07-30 16:14:52
445阅读
25.3 模式讲解25.3.1 认识访问者模式(1)访问者的功能 访问者模式能给一系列对象,透明的添加新功能。从而避免在维护期间,对这一系列对象进行修改,而且还能变相实现复用访问者所具有的功能。 &nbs
转载
精选
2013-12-06 10:47:51
589阅读
1.定义保证一个类仅有一个实例,并提供一个访问它的全局访问点。2.解决问题——读取配置文件的内容不用模式的解决方案public class AppConfig {
private String parameterA;
private String parameterB;
public String getParameterA() {
return p
原创
2013-06-18 12:44:03
773阅读
一年一度的十大IT技术图书评选又一本书入围了~
http://book.51cto.com/exp/bookrating2010/book.php
前年是《大话存储》,去年是《数据重现》,今年是《研磨设计模式》。
今年顺便捞了个策划编辑奖~
http://book.51cto.com/exp/bookrating2010/editor.php
原创
2011-01-21 10:32:06
361阅读
前言:本篇系看完《研磨设计模式》一书的个人理解和总结,可能存在不正确的地方,看时需要持怀疑态度。另外,所有的图都是示意图,示意,示。策略模式(Strategy):几点解释:多个if、elif 相连的代码我们实际开发中肯定经常遇到,如果 if、elif的方法体都很大,那就可以考虑使用策略模式,抽象出统一的接口,并将方法体的逻辑剥离出来封装为接口的不同实现类。这样做扩展性得到了提高。...
原创
2021-11-26 17:39:56
86阅读
19.1 场景问题19.1.1 开发仿真系统考虑这样一个仿真应用,功能是:模拟运行针对某个具体问题的多个解决方案,记录运行过程的各种数据,在模拟运行完成过后,好对这多个解决方案进行比较和评价,从而选定最优的解决方案。这种仿真系统,在很多领域都有应用,比如:工作流系统,对同一问题制定多个流程,然后通过仿真运行,最后来确定最优的流程做为解决方案;在工业设计和制造领域,仿真系统的
原创
2013-12-13 10:11:15
257阅读
1.定义提供一个/创建/对象实例的/功能,而无需/关心其/具体实现。被/创建实例的/类型可以是接口、抽象类,也可以是/具体的类。2.解决问题——面向接口编程不用模式的解决方案public interface Api {
public void product();
}
public class Impl implements Api {
public void produc
原创
2013-06-17 22:27:07
737阅读
1.定义将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的哪些类可以一起工作。2.解决问题——日志管理不用模式的解决方案版本一:用户要求日志以文件的形式记录public interface LogFileOperateApi {
/**
* 读取日志文件,从文件里面获取存储的日志列表对象
* @return 存储日志列表对
原创
2013-06-26 15:18:05
1023阅读
1.定义定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。2.解决问题——订阅报纸看起来订阅者是直接根有据打交道,但实际上,订阅者的订阅数据是被邮寄传递到报社,当报社出了报纸,报社按订阅信息交给邮局,邮局在代为发送到订阅者手里。在整个过程中,邮局起到一个中转的作用。使用观察者模式来解决问题public class Subject {
p
原创
2013-06-26 18:17:10
1594阅读
第一个系列就是工厂模式吧,因为在实际开发中,这个系列的模式用的还是蛮多的,优秀的框架必须之一,所以我们要好好学习之……
推荐博文:http://chjavach.iteye.com/blog/815160
推荐博文:http://chjavach.iteye.com/blog/834679
实际上看完这两篇博文就基本上对简单工厂有所掌握,而
原创
2012-07-31 22:56:26
631阅读
前言:本篇系看完《研磨设计模式》一书的个人理解和总结,可能存在不正确的地方,看时需要持怀疑态度。另外,所有的图都是示意图,示意,示。简单工厂:几点解释:客户端通过调用 Factory.createAImpl() 方法来创建A的实例 工厂一般只需要一个,不需要有实例,所以将构造方法设为私有,不允许创建实例 Factory.createAImpl() 可以带参数,通过传入不同的参...
原创
2021-11-25 10:01:54
101阅读
前言:本篇系看完《研磨设计模式》一书的个人理解和总结,可能存在不正确的地方,看时需要持怀疑态度。另外,所有的图都是示意图,示意,示。组合模式(Composite):几点解释:树形结构中有叶子节点,组合节点(包含其他节点),组合模式通过抽象出一个高层的父类,来对外提供统一的外观。这样,客户端就可以使用同一个引用类型来操作不同的节点对象。抽象父类中集合了所有类型的子类节点所需要的功能,...
原创
2021-11-25 10:01:53
26阅读
前言:本篇系看完《研磨设计模式》一书的个人理解和总结,可能存在不正确的地方,看时需要持怀疑态度。另外,所有的图都是示意图,示意,示。命令模式(Commad):几点解释:命令模式中分为三个角色:Invoker、Commad、Receiver。客户端调用Invoker,Invoker持有Commad对象并转调其对应方法,而Commad持有Receiver对象并转调其对应方法。因此这三层...
原创
2021-11-25 10:01:53
65阅读