系列文章 [Head First设计模式]山西面馆中的设计模式——装饰者模式 引言 不知不自觉又将设计模式融入生活了,吃个饭也不得安生,也发现生活中的很多场景,都可以用设计模式来模拟.原来设计模式就在我身边. 为什么观察者模式会出现呢? 为了建立一种对象与对象之间的依赖关系,一个对象发生改变时将自动通知其他对象,其他对象将相应做出反应.在此,发生改变的对象称为观察目标,而被通知的对象称为观察者,一个观察目标可以对应多个观察者,而且这些观察者之间没有相互联系,可以根据需要增加和删除观察者,使得系统…
系列文章 [Head First设计模式]山西面馆中的设计模式——装饰者模式 [Head First设计模式]山西面馆中的设计模式——观察者模式 引言 将学习融入生活中,是件很happy的事情,不会感觉到累.一个感觉:很好玩!挺开心的...... 为什么会出现建造者模式? 在软件系统中,有时面临着“一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法构成. 这个复杂的对象的各个部分经常面临剧烈变化,但是将它们组合在一起的算法却相对稳定. 比如:建一所房子,建房子的过程基本不变(算法:画…
引言 在山西面馆吃鸡蛋面的时候突然想起装饰者这个模式,觉得面馆这个场景跟书中的星巴兹咖啡的场景很像,边吃边思考装饰者模式.这里也就依葫芦画瓢,换汤不换药的用装饰者模式来模拟一碗鸡蛋面是怎么出来的吧.吃货有吃货的方式来理解......这里先将书中讲到的例子放在前面,理论的东西,讲的还是比较具体的,只是觉得咖啡的例子不是太好理解,lz很土,几乎没喝过咖啡,不知道什么摩卡啊......,还是中国特色的例子更好理解. 为什么学设计模式? 答:觉得会设计模式的人,不仅仅是码农,更像艺术家! 为什么现在学设…
系列文章 [Head First设计模式]山西面馆中的设计模式——装饰者模式 [Head First设计模式]山西面馆中的设计模式——观察者模式 [Head First设计模式]山西面馆中的设计模式——建造者模式 [Head First设计模式]饺子馆(冬至)中的设计模式——工厂模式 [Head First设计模式]一个人的平安夜——单例模式 引言 闲着没事,终于又拿起Head First设计模式 翻了翻,脑海里也一直在想抢票的事,抢票中使用一些抢票工具,这个抢票工具是否就是一个中间代理呢? 什…
理解javascript中的MVVM开发模式 http://blog.csdn.net/slalx/article/details/7856769 MVVM的全称是Model View ViewModel,这种架构模式最初是由微软的MartinFowler作为微软软件的展现层设计模式的规范提出,它是MVC模式的衍生物,MVVM模式的关注点在能够支持事件驱动的UI开发平台,例如HTML5,[2][3] WindowsPresentation Foundation (WPF), Silverligh…
本文主要讨论下Web开发中,准确而言,是PHP开发中的相关的设计模式及其应用.有经验的开发者肯定对于设计模式非常熟悉,但是本文主要是针对那 些初级的开发者.首先我们要搞清楚到底什么是设计模式,设计模式并不是一种用来解释的模式,它们并不是像链表那样的常见的数据结构,也不是某种特殊的应用 或者框架设计.事实上,设计模式的解释如下: descriptions of communicating objects and classes that are customized to solve a gene…
前言 备受争议的Lombok,有的人喜欢它让代码更整洁,有的人不喜欢它,巴拉巴拉一堆原因.在我看来Lombok唯一的缺点可能就是需要安装插件了,但是对于业务开发的项目来说,它的优点远远超过缺点. 我们可以看一下,有多少项目使用了Lombok(数量还在疯涨中...) 尽管如此,我们今天也只是单纯的来看一下@Builder()这个东西 @Builder的使用 使用@Builder修饰类 @Data @Builder public class UserDO { private Long id; pri…
在我们日常生活中,如构建一个飞船,一个手机,一栋建筑,都会有非常复杂的组装,这时候应该用到建造者模式 以建造一个飞船为例 案例:造小页飞船 1.飞船各部分元件 package com.littlepage.BuilderPattern; public interface AirShipBuilder { Engine builderEngine(); OrbitalModule builderOrbitalModule(); Escape builderEscape(); } 2.飞船实体用来组…
github地址:https://github.com/cheesezh/python_design_patterns 题目1 用程序模拟一个画小人的过程,要求小人要有头,身子,左手,右手,左脚,右脚. 基础代码 class PersonDrawer(): def draw(self): print("画头") print("画身子") print("画左手") print("画右手") print("画左脚&quo…
需求: 画一个小人,有头,有身体,两手两脚即可. 初始代码: # -*- encoding: utf-8 -*- #小人一 puts '这是第一个小人' puts '小人一:头' puts '小人一:瘦身体' puts '小人一:双手' puts '小人一:双脚' #小人二 puts '这是第二个小人' puts '小人二:头' puts '小人二:胖身体' puts '小人二:双手' puts '小人二:双脚' 问题:代码重复,而且容易出错,缺胳膊少腿之类的. 改进代码: # -*- enco…
系列文章 [Head First设计模式]山西面馆中的设计模式——装饰者模式 [Head First设计模式]山西面馆中的设计模式——观察者模式 [Head First设计模式]山西面馆中的设计模式——建造者模式 引言 今天是冬至,去饺子馆吃饺子,看他们店里面的水饺种类挺多,在等待中,在想是不是可以用设计模式模拟一下,生产饺子的过程,正好最近也在看工厂模式,也就现学现卖了.当然,实现的方式很多,只是一个例子而已.祝大家冬至,多多吃水饺..... 对象创建的问题? 我们应该面向接口编程而不是面向实…
系列文章 [Head First设计模式]山西面馆中的设计模式——装饰者模式 [Head First设计模式]山西面馆中的设计模式——观察者模式 [Head First设计模式]山西面馆中的设计模式——建造者模式 [Head First设计模式]饺子馆(冬至)中的设计模式——工厂模式 [Head First设计模式]一个人的平安夜——单例模式 [Head First设计模式]抢票中的设计模式——代理模式 [Head First设计模式]面向对象的3特征5原则 [Head First设计模式]鸭子…
系列文章 [Head First设计模式]山西面馆中的设计模式——装饰者模式 [Head First设计模式]山西面馆中的设计模式——观察者模式 [Head First设计模式]山西面馆中的设计模式——建造者模式 [Head First设计模式]饺子馆(冬至)中的设计模式——工厂模式 [Head First设计模式]一个人的平安夜——单例模式 [Head First设计模式]抢票中的设计模式——代理模式 [Head First设计模式]面向对象的3特征5原则 [Head First设计模式]鸭子…
. 门面设计模式 门面设计模式在 Tomcat 中有多处使用,在 Request 和 Response 对象封装中.Standard Wrapper 到 ServletConfig 封装中.ApplicationContext 到 ServletContext 封装中等都用到了这种设计模式. 门面设计模式的原理 这么多场合都用到了这种设计模式,那这种设计模式究竟能有什么作用呢?顾名思义,就是将一个东西封装成一个门面好与人家更容易进行交流,就像一个国家的外交部一样. 这种设计模式主要用在一个大的系…
说明:设计模式系列文章是读刘伟所著<设计模式的艺术之道(软件开发人员内功修炼之道)>一书的阅读笔记.个人感觉这本书讲的不错,有兴趣推荐读一读.详细内容也可以看看此书作者的博客https://blog.csdn.net/LoveLion/article/details/17517213 模式概述 模式定义 没有人买车会只买一个轮胎或者方向盘,大家买的都是一辆包含轮胎.方向盘和发动机等多个部件的完整汽车.如何将这些部件组装成一辆完整的汽车并返回给用户,这是建造者模式需要解决的问题.建造者模式又称为…
今天是五.四青年节,祝大家节日快乐.看着今天这标题就有食欲,夏天到了,醋溜土豆丝和清炒苦瓜适合夏天吃,好吃不上火.这两道菜大部分人都应该吃过,特别是醋溜土豆丝,作为“鲁菜”的代表作之一更是为大众所熟知,醋溜土豆丝,好吃不上火.清炒苦瓜这道菜好啊,更是夏天必备之良菜,其功效在此就不做过多赘述了.言归正传,上篇博客我们从“小弟”中学习了“外观模式”,我们也把“外观模式”戏称为“小弟模式”.今天我们要从醋溜土豆丝和清炒苦瓜的制作过程中来学习一下我们今天博客的主题“模板方法模式”(Template Me…
初识 MVVM 谈起 MVVM 设计模式,可能第一映像你会想到 WPF/Sliverlight,他们提供了的数据绑定(Data Binding),命令(Command)等功能,这让 MVVM 模式得到很好的实现. MVVM 设计模式顾名思义,通过分离关注点,各司其职.通过 Data Binding 可达到数据的双向绑定,而命令 Command 更是将传统的 Code Behind 事件独立到 ViewModel 中. MVVM 设计模式在 WPF 中的实现 在WPF中,你会像如下这样去定义一个专…
设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样.项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每一个模式描述了一个在我们周…
GOF23种设计模式 设计原则: 1. 单一职责原则(SRP):就一个类而言,应该仅有一个引起它变化的原因 2. 开放-封闭原则(OCP):软件实体(类.模块.函数等)应该可以扩展,但是不可修改.即对于扩展是开放的, 对于修改是封闭的. 3. 依赖倒转原则: A. 高层模块不应该依赖低层模块,两个都应该依赖抽象.B.抽象不应该依赖细节,细节应该依赖抽象.说白了,就是要针对接口编程,不要对实现编程. 4. 迪米特法则(LoD):如果两个类不必彼此直接通信,那么这两个类就不应该发生直接的相互作用.如…
[Spring中的设计模式] http://www.uml.org.cn/j2ee/201301074.asp [详解设计模式在Spring中的应用]    [http://www.geek521.com/?p=6883] [http://blog.csdn.net/fg2006/article/details/6435410] [http://ylsun1113.iteye.com/blog/828542 ] 1.简单工厂  又叫做静态工厂方法(StaticFactory Method)模式,…
一.综述 设计模式,根据前人经验总结出常见软件工程问题的解决思想套路.GoF一共归纳了23种设计模式,当然还有人扩充,不止这些.设计模式主要利用面向对象语言的特性,而android 的设计主要用JAVA语言,有很多地方用到设计模式. 二.设计原则 设计模式是遵循面向对象设计的五个设计原则来设计的,如下:1.单一职责原则(SRP)--一个类只能有一个职责,多个职责耦合在一起,会影响复用性.2.开放封闭原则(OCP)--对扩展是开放的,而对修改是封闭的3.Liskov替换原则(LSP)--继承必须确…
写的很好,学习道路更轻松一些 原文地址:http://blog.csdn.net/gtuu0123/article/details/6114197 JDK中设计模式 分类: Java相关 设计模式 2011-01-03 20:42 3550人阅读 评论(6) 收藏 举报 jdk设计模式swingclassloaderdocumentationiterator 本文主要是归纳了JDK中所包含的设计模式,包括作用和其设计类图. 首先来个总结,具体的某个模式可以一个一个慢慢写,希望能对研究JDK和设计…
如果你会写算法,又理解设计模式,你就牛逼了.后面一段时间我会尽可能易懂的描述来讲解iOS中的设计模式,并且每个设计模式都会有对应的demo:https://github.com/goodyboy6/Design_Patterns 每篇文章都会从一个具体的问题出发,引出其对应的设计模式及解决方案. 设计模式系列列表: 对象创建:  1.原型模式; 2.工厂方法; 3.抽象工厂; 4.生成器; 5.单例 接口适配:  6.适配器;  7.桥接; 8.外观 对象去耦:  9.中介者; 10观察者 抽象…
学习重点:1.金典的设计模式在实际中应用 2.JVM原理 3.jui源代码…
设计模式(Design Pattern)是 对软件设计中普遍存在的各种问题,所提出的解决方案.这个术语是由埃里希·伽玛等人(Erich Gamma,Richard Helm,Ralph Johnson和John Vlissides这四人提出的.也被称为:Gang of Four,GOF,四人帮)在1990年代从建筑设计领域引入到计算机科学的. 设计模式并不能直接用于完成代码的编写,而是描述在各种不同情况下,要怎么解决问题的一种方案. 以上描述摘自维基百科.设计模式出现于1990年代,那时主要的编…
设计模式在GIS中的应用 一.设计模式概述 随着面向对象技术的广泛应用,软件复用在越来越多的开发工程中被采用.在研究软件复用的过程中,设计模式的概念被提了出来.所谓设计模式就是一些设计面向对象的软件的经验总结,它的出现可以说是面向对象理论发展的一个重要的里程碑.地理信息系统(GIS)是一种特定而又十分重要的空间信息系统,它是以采集.贮存.管理.处理分析和描述整个或部分地球表面(包括大气层在内)与空间和地理分布有关的数据的空间信息系统.它不仅要处理一般的.规则的属性数据,还要处理海量的.复杂的空间…
Java中单态设计模式 2011-09-23 16:38:46|  分类: Java |  标签:technology!  |举报|字号 订阅     此博文是转自新浪博客中一名叫做"俊俊的BLOG“用户的一篇博文.感觉此博文确实很不错,所以在此拿出来分享一下!(笔者只是对其所举的代码略做了一些修改) 一概念: 设计模式:设计模式是指经过大量的实践总结和理论化之后的优选的代码结构.编程风格.以及解决问题的思路. 单态设计模式:采取一定的方法保证在整个软件系统中,对某个类只能产生一个对象实例,并且…
最近Android 6.0版本的源代码开放下载,刚好分析Android源码的技术书籍<Android源码设计模式解析与实战>上市,我们邀请到它的作者何红辉,来谈谈Android源码中的设计模式,以及近期Android开发中的一些热点话题. 受访嘉宾介绍: 何红辉(@MrSimp1e),前友盟Android工程师,活跃于国内各大技术社区,热爱开源,热爱技术,热爱分享.Android开源库 AndroidEventBus . Colorful 作者, 开发技术前线 站长,<Android源码…
  在 JDK(Java Development Kit)类库中,开发人员使用了大量设计模式,正因为如此,我们可以在不修改 JDK 源码的前提下开发出自己的应用软件.研究 JDK 类库中的模式实例也不失为学习如何使用设计模式的一个好方式.以后用到现在设计模式了自己去看看JDK的源码还是很方便的. 1. 创建型模式: (1) 抽象工厂模式(Abstract Factory) • java.util.Calendar#getInstance() • java.util.Arrays#asList()…
最近看了一些android的源码,发现设计模式无处不在啊!感觉有点乱,于是决定要把设计模式好好梳理一下,于是有了这篇文章. 面向对象的六大原则 单一职责原则 所谓职责是指类变化的原因.如果一个类有多于一个的动机被改变,那么这个类就具有多于一个的职责.而单一职责原则就是指一个类或者模块应该有且只有一个改变的原因.通俗的说,即一个类只负责一项职责,将一组相关性很高的函数.数据封装到一个类中. 开闭原则 对于扩展是开放的,这意味着模块的行为是可以扩展的.当应用的需求改变时,我们可以对模块进行扩展,使其…