设计模式
写了程序换酒钱
Want to be a geek!!!
展开
-
单模
对于资源管理和特殊的对象管理,这个模式很有效 #ifndef TEST_H#define TEST_H#include using namespace std;class Test{public: static Test& getTestClass(); ~Test(){cout void setI(int a) {i = a;原创 2012-06-05 22:28:51 · 849 阅读 · 0 评论 -
策略模式
策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。 策略模式在应用时,是根据不同的使用情况动态的选择使用的算法,对于客户来说,提供了很好的可扩展性和封闭性。 下面是代码示例: #ifndef原创 2012-08-07 20:07:04 · 853 阅读 · 0 评论 -
Command模式
命令(Command)模式属于对象的行为模式【GOF95】。命令模式又称为行动(Action)模式或交易(Transaction)模式。命令模式把一个请求或者操作封装到一个对象中。命令模式允许系统使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。 适用性:在软件系统中,行为请求者与行为实现者之间通常呈现一种紧耦合的关系。但在某些场合,比如要对行为进行原创 2012-07-23 14:12:01 · 1045 阅读 · 0 评论 -
FlyWeight模式
设计模式中的享元模式,避免大量拥有相同内容的小类的开销(如耗费内存),使大家共享一个类(元类). 使用面向对象的技术时,虽然在开发过程中能过简化设计,可是在一切是对象的思想下,在一些小粒度,大数量的应用中,可能会导致对象数极具增大,导致消耗太多的内存。比如文本编辑器,如果一个字符就是一个对象,那么可想而知对象数是对少。原创 2012-07-22 09:57:12 · 1182 阅读 · 0 评论 -
责任链模式
责任链模式(Chain of Responsibility)的目标是使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递请求,直到有一个对象处理它为止。 举个例子。你到银行去办理业务,只是简单的存个钱,也许ATM就解决你的问题。如果你是为了交费用的,那等去柜台,但你却是来咨询金融产品的,会有专员接待你,事实上你原创 2012-07-21 09:48:55 · 808 阅读 · 0 评论 -
TemplateMethod模式
父类已经提供好了算法模板,子类负责具体实现各步算法。在使用TemplateMethod模式时一定对算法的分析很透彻,不然模板定下来,一旦改变就很困难了。 TemplateMethod模式在Android框架中使用的很多。例如Activity对象的几个状态。 其中就定义了onCreat原创 2012-07-20 16:04:29 · 794 阅读 · 0 评论 -
Proxy模式
Proxy模式是构造型的设计模式之一.所谓代理,是指具有与代理元(被代理的对象)具有相同的接口的类,客户端必须通过代理与被代理的目标类交互,而代理一般在交互的过程中(交互前后),进行某些特别的处理。 根据这些“特别处理”的不同,有以下几种常见的代理模式:- Remote proxy:远程代理。该代理可以让客户端透明地引用一个存在于不同地址空间(远程或本地)的对象。- Virtu原创 2012-07-20 10:45:01 · 945 阅读 · 0 评论 -
adapt模式
代码都是人写的,每个人的生存体验都是不一样的,做事的风格也是。就能方法取名来,有些人喜欢java的大小骆驼,有些人则是下划线控。 现在你要写一个类,类中有一个函数,项目很严谨,名字都规定好了。你以前的的一个接口类能够派上用场,可是函数名却很是不同,叫你粘贴复制你感觉面子上挂不住,那现在你就需要一些adapt(改编,适应)。原创 2012-07-18 23:42:20 · 2059 阅读 · 0 评论 -
修饰器
修饰器模式在java中很普遍(I/O操作的类),下面是我在C++中的实现 都是继承的同一个基类,但是在实现的时候,有的实现的很高层,一些没有实现相关的接口的可以使用那些实现了高级功能的类来实现功能。#ifndef BASECLASS_H#define BASECLASS_H#include using namespace std;class baseClas原创 2012-06-05 22:30:58 · 988 阅读 · 0 评论 -
Prototype模式
有时候我们已经创建了一个对象,但是我们想再得到这个对象的一个副本,复制构造函数是很好的选择,当然必要的封装能够优化结构和少打点代码(有点工厂的味道,给你用就行了)。 对于Prototype模式模式,我使用More Effective C++中的例子。 我到一家餐厅吃饭,离我不远的顾客正在吃饭,我看他狼吞虎咽的,不由的好原创 2012-07-18 19:45:59 · 1244 阅读 · 0 评论 -
建造者模式
建造者模式可以将一个产品的内部表象与产品的生成过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。和工厂模式相比,就是我连生产线都提供给你了,还明确了生产的工序。 一个是以工厂为中心,一个是以产品为中心。 下图是简单的描述图 #ifndefPRODUCT_H#de原创 2012-07-18 09:16:48 · 781 阅读 · 0 评论 -
Factory模式
工厂模式有两种,一种是一个工厂只有一条流水线,只能生产一种特定的产品(小工厂);还有就是大工厂,一个工厂有好多条流水线,能够生产好多种产品,但是你接订单的时候必须要挑好流水线号,生产出相应的产品。 小工厂: Factory 为工厂的基类,有一个纯虚函数factoryMethod();原创 2012-07-17 09:39:45 · 959 阅读 · 0 评论 -
Linux服务器编程(1)
Linux服务器编程(1)前言虽然有OSI七层标准协议,但是现在Internet上的实际协议是四层的TCP/IP协议族,从上倒下,分别是应用层,传输层,网络层和数据链路层。其是一个分层,多协议的通讯体系。每一层通过不同的协议完成不同的功能,上层使用下层提供的服务,如下图所示。 数据链路层数据链路层实现了网卡接口的驱动程序,来处理在数据在物理媒介的传输。不同的物理网络,比如以太网,令牌环,wlan,原创 2015-08-04 18:06:00 · 945 阅读 · 0 评论