Welcome 微信登录

首页 / 软件开发 / 数据结构与算法

设计模式学习:简单工厂

设计模式学习:简单工厂

设计模式学习:简单工厂2016-02-25简介:从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。类图:从UML类图中,可以看出,简单工厂模式的意思,就是把一个类内部,需要生成的部分,提取出来,变为一个工厂,通过工厂来new对象。假设我们要吃苹果了,我们可以在代码中new一个苹果出来;当我们需...
设计模式学习——工厂方法

设计模式学习——工厂方法

设计模式学习——工厂方法2016-02-25简介:上一篇我们介绍了简单工厂,还记得简单工厂的缺点么?忘了回去浏览一下(这里)!因为简单工厂创造了一个万能的上帝工厂类,它把所有的工作都包了。当我们增加一个新的产品的时候,我们仍需要修改工厂中的方法。而工厂方法改进了简单工厂这一缺点,并且保留了原有的优点。怎么做到的,继续看下去!在工厂方法中,核心的工厂类摇身一变,变为一个抽象的工厂角色,而将具体的工作交给具体的子类去做。这个就是工厂方法对简单工厂的改进。言语表...
设计模式学习——抽象工厂

设计模式学习——抽象工厂

设计模式学习——抽象工厂2016-02-25简介:当每个抽象产品都有多于一个的具体子类的时候,工厂角色怎么知道实例化哪一个子类呢?比如每个抽象产[1] 品角色都有两个具体产品。抽象工厂模式提供两个具体工厂角色,分别对应于这两个具体产品角色,每一个具体工厂角色只负责某一个产品角色的实例化。每一个具体工厂类只负责创建抽象产品的某一个具体子类的实例。每一个模式都是针对一定问题的解决方案,工厂方法模式针对的是一个产品等级结构;而抽象工厂模式针对的是多个产品等级结构...
设计模式学习——多例模式

设计模式学习——多例模式

设计模式学习——多例模式2016-02-25介绍:所谓的多例模式,实际上就是单例模式的自然推广,作为对象的创建模式,多例模式有以下特点:1可以有多个实例2多例类必须自己创建,管理自己的实例,并向外界提供自己的实例。从上面的特点中,可以体会多例模式与单例模式的不同。单例模式只允许一个实例的存在。单例类图:多例类图:类图更直观的表示了多例类,该多例类会提供多个实例,实例的数量我们是可以自己控制的,如果数量不多的话,实例就可以当做是类的内部实例变量;如果实例很多...
设计模式学习——建造者模式(生成器模式)

设计模式学习——建造者模式(生成器模式)

设计模式学习——建造者模式(生成器模式)2016-02-27所有配套代码均在github上:https://github.com/ZHONGHuanGit/DesignPattern简介:建造者模式也叫做生成器模式,定义为:封装一个产品的构造过程,并且按此步骤构造。建造者模式(生成器模式)属于创建类模式,和工厂模式相比,你会觉得有点类似,但是有区别之处。不过,建议在看下去之前,得明白三个工厂模式,如果你记得不太清楚了,可以看这里,简单工厂,工厂方法,抽象工...
设计模式学习:原型模式

设计模式学习:原型模式

设计模式学习:原型模式2016-02-27原型模式属于对象的创建模式,通过给出一个原型对象来指明要创建对象的类型,然后用复制这个原型对象的办法来创建出更多的同类型的对象。就是给你一个现有的对象,你要得到和这个对象同类型的新对象,就将这个对象复制一下,就可以得到了。Java对象的复制:Java的所有类都是从java.lang.Object类继承而来的,而object类提供下面的方法对对象进行复制:protected Object clone()子类可以把这个...
设计模式学习——适配器模式

设计模式学习——适配器模式

设计模式学习——适配器模式2016-02-27介绍:现实中适配器存在很多。就好像变压器,我想读这篇文章的你,很可能是一名学生(起码曾经是吧)。因为现在正好在宿舍写这篇blog。我所在的宿舍是会限电的,电压高了会跳闸,不能使用像电磁炉这样的设备,你懂的,大学里,偶尔宿舍成员在宿舍撮一顿,不能用些煮东西的设备,太没人性了有木有(吐槽下学校的制度),但是,网上有一些称为“变压器”的东西,可以帮你解决这个麻烦。变压器能够转变电压。比如把22...
设计模式学习:装饰者模式

设计模式学习:装饰者模式

设计模式学习:装饰者模式2016-02-27装饰者(Decorator)模式又叫包装模式,用组合的方式来拓展对象的功能,是继承关系的一个替代方案。定义说明:装饰者模式动态地将责任附加到对象上,若要扩展功能,装饰着提供了比继承更富有弹性的替代方案。从实例中体会:实例来自 HeadFirst一书(建议读该书,例子太赞了),是星巴克的例子。星巴克的咖啡很有名(穷学生,现在喝不起o(╯□╰)o)。他们供应很多种类的咖啡。一开始他们的类设计是下面这样的。但是因为购买...
多功能聊天室:项目规划实现图

多功能聊天室:项目规划实现图

多功能聊天室:项目规划实现图2016-02-29网络编程项目规划最近在练习一个项目吧,大概给6天的时间来完成它,其中涉及到了数据库的知识,网络编程,linux C等等,大考验的时刻到了!我知道PM们的项目规划图绝对比我的高大上,但是咱也不能没有自信对不?因此,我开始先分析我的项目它有什么功能需求,需求分析完成了,OK,那么项目应该大体上,又是靠什么来实现的呢?这是一个最值得深究的问题!又有人说,那不是得用代码来实现吗?等等,那样你得写到什么时候?因而我们绝...
设计模式学习:组合模式

设计模式学习:组合模式

设计模式学习:组合模式2016-02-29介绍:想必你已经了解了数据结构中的树,ok,组合模式对于你就是一会儿的功夫了。组合模式相对来说比较简单。看一下定义组合模式:将对象组合成树形结构以表示“部分-整体”的层次结构。使得用户对单个对象和组合对象的使用具有一致性。暂时没有想到好的例子,如果你有,请告诉我。下面我用树来对组合模式进行解释。树的结构是下面的这样的:没棵树有一个根节点,也有叶子节点和树枝节点,一些结构都是用树结构表示的,例...
懒惰模式的识别

懒惰模式的识别

懒惰模式的识别2016-02-29公司最近让我负责开发一款APP,以增加用户粘性。在开发APP之前与老板讨论先在哪个平台上实体。老板直言先上IOS。我问为何,老板回复:“我们APP主要针对的客户是土地投资拓展人员,这群人,都是土豪,谁用安卓?再举个简单的例子,你看我们公司好多人用IOS?”于是,我们就开始了IOS的准备。然而,当我们在走访用户的时候,发现被老板坑哭了,因为我们前期走访的10个用户中,8个安卓,1个安卓与IOS的平板,...
敏捷文档编制路线图概述

敏捷文档编制路线图概述

敏捷文档编制路线图概述2016-02-29 infoq 译:李清介绍一下我的朋友Jane和John。John是一家大型公司的长期分析师,负责捕获新的软件产品及现有软件产品的需求。他用SRS(软件需求规格说明书)记录所有客户对正在开发或维护的特定产品的需求。Jane是同一家公司的开发人员。她通常接收John的软件需求规格说明书(SRS),而后开始对要实现的内容进行技术分析和设计。完成分析之后,她就开始写代码实现。我的这两个朋友John和Jane的需求文档和设...
基于MEF的插件框架的总体设计

基于MEF的插件框架的总体设计

基于MEF的插件框架的总体设计2016-03-021.MEF框架简介MEF的全称是Managed Extensibility Framework(MEF),其是.net4.0的组成部分,在3.5上也可以使用。熟悉java中的spring框架的人,对这个框架中涉及的几个概念应该会比较容易理解。这里我先把我两年多前的一个完整的利用MEF搭建的插件式系统中涉及到的MEF框架里的几个基本概念大致描述下。1.1 依赖注入(export、import)MEF框架中提供...
支付宝的性能测试概述

支付宝的性能测试概述

支付宝的性能测试概述2016-03-02 infoq 付丽华 孙玉星一、性能测试支付宝场景介绍2013年双11过程当中,促销开启的第一分钟内支付宝的交易总额就突破了一亿元,短时间内大量用户涌入的情况下,如何保证用户的支付顺畅,是对支付宝应用系统的一个极大的挑战。支付宝的性能测试场景分为性能基线测试,项目性能测试。任意一笔交易过来,我们都需要对交易进行风险扫描,对于有可能是账户盗用的交易,我们会把这笔支付直接拒绝掉,或者通过手机校验码等方式进行风险释放。我们...
浅谈从敏捷工程实践中获益的五种途径

浅谈从敏捷工程实践中获益的五种途径

浅谈从敏捷工程实践中获益的五种途径2016-03-02 infoq 译:夏雪创造有用的软件是门工艺。这是没有非黑即白的成功公式的。但是,却有一些敏捷工程实践,实践证明它已经屡次为企业增加了价值,但前提是要考虑周全之后再使用。在本文中,我将与大家分享5条具体的途径,你的企业能够通过这些途径从敏捷工程实践中获益。(假设我们使用Scrum + 极限编程(XP)= 敏捷这条基本公式,那么在我讲敏捷工程实践时就会谈到公式中与XP相关的那一部分,比如测试驱动开发、结对...
视觉感知测试概述

视觉感知测试概述

视觉感知测试概述2016-03-02 infoq 刘冉随着互联网第二春的到来以及Web2.0的盛行,Web应用程序开发已经成为了当前软件开发的主力军。现在无论是企业级应用,社交应用还是移动应用,Web已经成为标准配置,而且很多企业正在逐步的将自己的企业级本地应用进行互联网Web化。但是Web 的界面布局测试,多浏览器测试,CSS/JavsScript的重构等都成为界面测试的痛中之痛,特别是大型Web应用的回归测试量太大,从而导致回归测试很多时候根本无法完成...
支付宝分布式事务测试方案简介

支付宝分布式事务测试方案简介

支付宝分布式事务测试方案简介2016-03-04 infoq 李跃什么是分布式事务传统的基于数据库本地事务的解决方案只能保障单个服务的一次处理具备原子性、隔离性、一致性与持久性,但无法保障多个分布服务间处理的一致性。因此,我们必须建立一套分布式服务处理之间的协调机制,保障分布式服务处理的原子性、隔离性、一致性与持久性。支付宝为什么需要分布式事务基于SOA架构,整个支付宝系统会拆分成一系列独立开发、自包含、自主运行的业务服务,并将这些服务通过各种机制灵活地组...
开放式敏捷实施之执行摘要

开放式敏捷实施之执行摘要

开放式敏捷实施之执行摘要2016-03-04 infoq 译:王灵军本文是开放式敏捷实施系列文章的第二篇。如果还没有查看过第一篇,则推荐你看一看:更好地敏捷实施。开放式敏捷实施(OAA)是一个可重复的技巧,用于快速和持续地实施敏捷过程。无论你当前在做什么,它都可以与之一起工作,并随时可以加入到你的工作中。因为它结合了邀请的威力、开放空间、通过仪式、游戏机制、讲故事等等,所以你的敏捷实施就能落地生根。一个开放式敏捷实施的假设就是参与度的增加在短暂的时间延迟之...
维护遗留应用的实用技术

维护遗留应用的实用技术

维护遗留应用的实用技术2016-03-04 infoq 译:马连浩遗留应用很少如下面所示:在这个美丽的图形中,通过定义良好的管道,使得层次和模块块划分清晰,交互便利。模块可以移动,替换,也易于添加,支持那些重要的“特性”:可扩展性,可伸缩性,可维护性……在现实中,遗留应用更可能如下所示:如果你是接到维护遗留应用程序任务的不幸开发者,有时你会感到像老鼠在迷宫里;每次开机时,还有更多意想不到的角落和拐弯,甚至...
领域驱动设计的实现之路

领域驱动设计的实现之路

领域驱动设计的实现之路2016-03-04 infoq 滕云2004年,当Eric Evans的那本《领域驱动设计——软件核心复杂性应对之道》(后文简称《领域驱动设计》)出版时,我还在念高中,接触到领域驱动设计(DDD)已经是8年后的事情了。那时,我正打算在软件开发之路上更进一步,经同事介绍,我开始接触DDD。我想,多数有经验的程序开发者都应该听说过DDD,并且尝试过将其应用在自己的项目中。不知你是否遇到过这样的场景:你创建了一个资...
<< 51 52 53 54 55 56 57 58 59 60 >>