【06】设计模式
文章平均质量分 83
_小青年儿_
优秀是一种习惯
展开
-
设计模式的通俗理解
1、工厂模式:Factory 客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的修改。如:如何创建及如何向客户端提供。 2、建造模式:Builder 将产品的内部表象和产品的生成过程分割开来,从而使一个建造过程生成具有不同的内部表象的产品对象。建造模式使得产品内部表象可以独立的变化,客户不必原创 2011-11-28 16:51:35 · 834 阅读 · 0 评论 -
23种设计模式
1. Abstract Factory:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的修改。如:如何创建及如何向客户端提供。原创 2012-07-26 20:52:16 · 1594 阅读 · 0 评论 -
代理模式vs适配器模式vs外观模式
一、定义代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的访问。适配器模式(Adapter):将一个类的接口转换成客户希望的另外一个接口,使得原本接口不兼容而不能一起工作的那些类可以一起工作。外观模式(Facade):为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。二、理解代理模式和适配器模原创 2012-07-27 21:01:15 · 1019 阅读 · 2 评论 -
重构——选择结构(if..else..,switch,try..catch..)的拆分
xxxx编程中经常遇到很多条件,以及条件套条件的情况,以至于一个方法会写得非常地长。有多种方法可以规避这个问题。比如反射,策略模式,表驱动等等。先抛开这些方法不讲,从根本需求来探索这个过程。 一个switch结构可能是这样:swicth(case) case 1: //do1 break; case 2: //do2 break;原创 2012-08-17 18:21:13 · 2671 阅读 · 0 评论 -
重构——代码坏味道
坏味道特征情况及处理方式目标重复代码1.重复的表达式2.不同算法做相同的事3.类似代码同一个类的两个函数有相同表达式重复代码提取为方法相同表达式只在一个类的一个方法出现,供其他方法调用兄弟类含有相同表达式重复代码提取原创 2012-08-17 18:17:43 · 2359 阅读 · 0 评论 -
重构方法
一、重新组织函数1、Extract Method (提炼函数)你有一段代码可以被组织在一起并独立出来。将这段代码放进一个独立函数,并让函数名称解释该函数的用途。2、Inline Method (内联函数)一个函数调用的本体与名称同样清楚易懂。在函数调用点插入函数体,然后移除该函数。3、Inline Temp (内联临时变量)你有一个临时变量,只被一个简单表达式赋值一次,而它原创 2012-08-17 18:40:06 · 1535 阅读 · 0 评论 -
观察者模式——Observer
说起观察者模式犹如黄河之水,滔滔不绝,一发而不可收拾啊。今天先写上半部分,明天写事件委托。直接上代码,感谢scl的分享[cpp] view plaincopy// 观察者模式定义了一种一对多的依赖,让多个观察者对象同时监听某一个 // 主题对象。这个主题对象在状态发生变化原创 2013-05-10 21:08:11 · 1115 阅读 · 0 评论 -
提升代码质量
本文主要关注代码的内部和外部质量,编程的价值观,代码质量的评估标准,整洁代码的匠艺以及如何维护已有的代码。外部质量:用户所能感受到的部分,正确性,易用性,效率,可靠性。内部质量(代码质量):可维护性,灵活性,可移植性,重用,可读性,可测试性,可理解性。总结的22条经验如下:代码分为外部质量和内部质量,好的产品不等于好的代码(Good Software != Qual原创 2013-09-30 18:52:23 · 1145 阅读 · 0 评论 -
编写可读代码的艺术
观点:程序员之间的互相尊重体现在他所写的代码中。他们对工作的尊重也体现在那里。代码最重要的读者不是编译器,解释器或电脑,而是人。写出的代码能让人快速理解、轻松维护、容易扩展的程序员才是专业的程序员。《编写可读代码的艺术》一书,专注于如何编写可读性更好的代码。1.代码应当易于理解1.1是什么让代码变得“更好”示例1[cpp] view plai原创 2013-09-30 18:45:13 · 1258 阅读 · 0 评论 -
解释器模式——Interpreter
27.1 四则运算你会吗 在银行、证券类项目中,经常会有一些模型运算,通过对现有数据的统计、分析而预测不可知或未来可能发生的商业行为。模型运算大部分是针对海量数据的,例如建立一个模型公式,分析一个城市的消费倾向,进而影响银行的营销和业务扩张方向,一般的模型运算都有一个或多个运算公式,通常是加减乘除四则运算,偶尔也有指数、开方等复杂运算。具体到一个金融业务中,模型公式是非常复杂的,原创 2012-07-26 20:33:50 · 1647 阅读 · 0 评论 -
装饰模式——Decorator
装饰者模式Decorator模式(别名Wrapper):动态将职责附加到对象上,若要扩展功能,装饰者提供了比继承更具弹性的代替方案。 意图:动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活。 设计原则:1. 多用组合,少用继承。利用继承设计子类的行为,是在编译时静态决定的,而且所有的子类都会继承到相同的行为。然而,如果能原创 2012-07-23 19:58:04 · 676 阅读 · 0 评论 -
建造者模式——Builder
前序小菜和大鸟两人出去吃夜宵,大鸟要了份炒饭,小菜要了份炒面。炒完后大鸟看到炒面感觉不错,于是也叫了一份。大鸟尝后感觉淡而无味,于是便问小菜:“为什么你的炒面好吃,而我再要的炒面却没有放盐?这好吃不好吃是由谁决定的?”小菜答道:“当然是烧菜的人,他感觉好,就是一盘好面,要是心情不好,或者粗心大意,就是一盘垃圾。”“:)好,那再想想,老麦老肯他们的产品,味道是由什么决定的?”“我知道,那是由他们原创 2012-07-22 10:31:34 · 1564 阅读 · 0 评论 -
抽象工厂模式——Abstract Factory
一、 抽象工厂(Abstract Factory)模式抽象工厂模式是所有形态的工厂模式中最为抽象和最具一般性的一种形态。为了方便引进抽象工厂模式,引进一个新概念:产品族(Product Family)。所谓产品族,是指位于不同产品等级结构,功能相关联的产品组成的家族。如图: 图中一共有四个产品族,分布于三个不同的产品等级结构中。只要指明一个产品所处的产品族以及它所属的等级结构,就可原创 2011-12-06 14:27:44 · 847 阅读 · 0 评论 -
单例模式——Singleton
GOF的《设计模式》中这样描述:保证一个类仅有一个实例,并提供一个访问它的全局访问点。通常我们可以让一个全局变量使得一个对象被访问,但它不能阻止你实例化多个对象。一个最好的办法是,让类自身负责保存它的唯一实例。这个类可以保证没有其他实例可以被创建,并且它可以提供一个访问该实例的方法。也就是说,很多时候我们需要全局的对象,如一个工程中,数据库访问对象只有一个,这时,可以考虑使用单例模式。单例原创 2011-12-01 20:50:02 · 855 阅读 · 1 评论 -
工厂方法模式——Factory Method
一. 工厂方法模式 我们知道简单工厂模式的应用就是用来创建一个对象,简单工厂模式是将所有对象的初始化集于一个具体的工厂类来实现,这个工厂类负责所有产品的创建,但是这种创建只能创建单一的产品,如简单工厂模式里的ChickenFactory这种工厂只能生产鸡肉这个系列的产品,而当需求发生变化时简单工厂模式就无法应对了。 例如:我再一次带MM光临了麦当劳时,这次MM不想吃鸡翅了,而是原创 2011-12-06 11:03:29 · 656 阅读 · 0 评论 -
享元模式——FlyWeight
软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累。最近看设计模式的书,对于每个模式,用C++写了个小例子,加深一下理解。主要参考《大话设计模式》和《设计模式:可复用面向对象软件的基础》(DP)两本书。本文介绍享元模式的实现。 举个围棋原创 2012-07-22 10:23:32 · 1967 阅读 · 0 评论 -
简单工厂模式——Factory
专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。它又称为静态工厂方法模式,属于类的创建型模式。 简单工厂模式的UML类图 简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例。 该模式中包含原创 2011-12-06 10:27:39 · 726 阅读 · 0 评论 -
原型模式——Prototype
按照设计模式书上的介绍:意图: 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。适用性: 当一个系统应该独立于他的产品创建、构成和表示时,需要使用原型模式 当要实例化的类是在运行时刻指定时,如通过动态装载 为了避免创建一个与产品类层次平行的工厂类层次时 当一个类的实例只能有几个不同状原创 2012-07-22 10:48:20 · 820 阅读 · 0 评论 -
Reactor 模式
概念:Reactor这个词译成汉语还真没有什么合适的,很多地方叫反应器模式,但更多好像就直接叫reactor模式了,其实我觉着叫应答者模式更好理解一些。通过了解,这个模式更像一个侍卫,一直在等待你的召唤,或者叫召唤兽。 并发系统常使用reactor模式,代替常用的多线程的处理方式,节省系统的资源,提高系统的吞吐量。 先用比较直观的方式来介绍一下这种方原创 2015-04-02 21:31:21 · 856 阅读 · 0 评论