精华内容
下载资源
问答
  • 一、命名模式(Command)基本概念 1.1 定义 命令(Command)模式:将请求封装成对象,以便使用不同的请求、日志、队列等来参数化其他对象。命令模式也支持撤销操作。 命令模式是对命令的封装。命令模式把发出...

    通过上面的例子,我相信大家对于命令模式有了一定的了解,这一节我们把一些概念梳理一下。

    一、命名模式(Command)基本概念

    1.1 定义

    命令(Command)模式:将请求封装成对象,以便使用不同的请求、日志、队列等来参数化其他对象。命令模式也支持撤销操作。

           命令模式是对命令的封装。命令模式把发出命令的责任和执行命令责任分割开,委派给不同的对象。

     

    1.2 类图

    1.3 主要角色

    命令模式涉及到五个角色,它们分别是:

    (1)客户端(Client)角色:创建一个具体命令(ConcreteCommand)对象并确定其接收者。在上面的例子中就是“买烧烤的人”- Client。

    (2)命令(Command)角色:声明了一个给所有具体命令类的抽象接口。在上面的例子中就是“烧烤命令抽象类”- Command

    (3)具体命令(ConcreteCommand)角色:定义一个接收者和行为之间的弱耦合;实现execute()方法,负责调用接收者的相应操作。execute()方法通常叫做执行方法。在上面的例子中就是“烤鸡翅命令”和“烤羊肉串命令”

    (4)请求者(Invoker)角色:负责调用命令对象执行请求,相关的方法叫做行动方法。在上面的例子中就是“漂亮的服务员”- BeautifulWaiter

    (5)接收者(Receiver)角色:负责具体实施和执行一个请求。任何一个类都可以成为接收者,实施和执行请求的方法叫做行动方法。在上面的例子中就是“烤串师傅” – Barbecuer。

     

    1.4 命令模式的优点

    命令模式是对命令的封装。命令模式把发出命令的责任和执行命令的责任分割开,委派给不同的对象。

      每一个命令都是一个操作:请求的一方发出请求要求执行一个操作;接收的一方收到请求,并执行操作。命令模式允许请求的一方和接收的一方独立开来,使得请求的一方不必知道接收请求的一方的接口,更不必知道请求是怎么被接收,以及操作是否被执行、何时被执行,以及是怎么被执行的。

      命令允许请求的一方和接收请求的一方能够独立演化,从而具有以下的优点:

    (1)在命令模式中, 请求者不直接与接收者交互, 即请求者不包含接收者的引用, 因此彻底消除了彼此之间的耦合.

    (2)命令模式满足"开-闭"原则。如果增加新的具体命令和该命令的接收者, 不必修改调用者的代码, 调用者就可以使用新的命令对象; 反之, 如果增加新的调用者, 不必修改现有的具体命令和接收者, 新增加的调用者就可以使用自己已有的具体命令

    (3)由于请求者被封装到了具体命令中, 那么就可以将具体命令保存到持久化的媒介中, 在需要的时候, 重新执行这个具体命令,因此使用命令模式可以记录日志

    (4)使用命令模式可以对请求者的"请求"进行排队。每个请求都各自对应一个具体命令,因此可以按照一定的顺序执行这些命令。

     

    1.5 命令模式的缺点

    (1)可能产生大量具体命令类。因为计对每一个具体操作都需要设计一个具体命令类,这将增加系统的复杂性。

     

    展开全文
  • C++设计模式-命令模式

    千次阅读 多人点赞 2019-08-09 13:46:49
    命令模式(Command),将一个请求封装为对象,从而使你看用不同的请求对客户端进行参数化;对请求排队或记录请求日志,以及支持可撤销操作。 命令模式的作用: 1. 能比较容易的设计一个命令队列; 2. 在需要的...

    目录

     

     

    基本概念

    代码与实例


     

    基本概念

    命令模式(Command),将一个请求封装为对象,从而使你看用不同的请求对客户端进行参数化;对请求排队或记录请求日志,以及支持可撤销操作。

    命令模式的作用:

              1. 能比较容易的设计一个命令队列;

              2. 在需要的情况下,可以比较容易地将命令记入日志;

              3. 允许接收请求的一方决定是否要否决请求;

              4. 可以容易的实现对请求的撤销和重做;

              5. 由于加进的新的具体命令类不影响其他类,因此增加新的具体命令类很容易。

     

    UML图如下(此图来源于大话设计模式)

     

    代码与实例

    程序运行截图如下:

    源码如下:

    Head.h

    #ifndef HEAD_H
    #define HEAD_H
    
    #include <iostream>
    #include <string>
    using namespace std;
    
    //Receiver类,知道如何实施与执行一个与请求相关的操作,任何类都可能作文一个接收者
    class Receiver{
    
    public:
    	void action();
    	~Receiver();
    };
    
    //Command类,用来声明执行操作的接口
    class Command{
    
    public:
    	virtual void execute();
    	Command(Receiver *receiver);
    	virtual ~Command();
    
    protected:
    	Command();
    	Command(Command &c);
    	Command &operator = (Command &c);
    	Receiver *m_receiver;
    };
    
    //ConcreteCommand类,将一个接收者对象绑定于一个动作,调用接收这相应的操作,以实现Execute
    class ConcreteCommand: public Command{
    
    public:
    	ConcreteCommand(Receiver *receiver);
    	void execute();
    	~ConcreteCommand();
    };
    
    //Invoker类,要求该命令执行这个请求
    class Invoker{
    
    public:
    	void setCommand(Command *command);
    	void executeCommand();
    
    private:
    	Command *m_command;
    };
    
    #endif

    Head.cpp

    #include "Head.h"
    
    void Command::execute()
    {
    
    }
    
    Command::~Command()
    {
    	cout << "Command::~Command()" << endl;
    }
    
    Command::Command()
    {
    
    }
    
    Command::Command(Command &c)
    {
    
    }
    
    Command::Command(Receiver *receiver)
    {
    	m_receiver = receiver;
    }
    
    Command & Command::operator=(Command &c)
    {
    	return Command();
    }
    
    void Receiver::action()
    {
    	cout << "执行请求!" << endl;
    }
    
    Receiver::~Receiver()
    {
    	cout << "Receiver::~Receiver()" << endl;
    }
    
    ConcreteCommand::ConcreteCommand(Receiver *receiver) : Command(receiver)
    {
    
    }
    
    void ConcreteCommand::execute()
    {
    	m_receiver->action();
    }
    
    ConcreteCommand::~ConcreteCommand()
    {
    	cout << "ConcreteCommand::~ConcreteCommand()" << endl;
    }
    
    void Invoker::setCommand(Command *command)
    {
    	m_command = command;
    }
    
    void Invoker::executeCommand()
    {
    	m_command->execute();
    }
    

    main.cpp

    #include "Head.h"
    
    int main(int *argc, int *argv){
    
    	Receiver *r = new Receiver;
    	Command *c = new ConcreteCommand(r);
    	Invoker *i = new Invoker;
    	i->setCommand(c);
    	i->executeCommand();
    
    	delete r;
    	delete c;
    	delete i;
    
    	getchar();
    	return 0;
    }

     

    展开全文
  • 学习说明:本篇的知识,只需要有一个大概的了解即可,在后面的章节中每个设计模式都会有详细的介绍。...GoF 中提供了单例模式、工厂方法模式、抽象工厂模式、原型模式、建造者模式 5 种创建型模式。 .

    学习说明:本篇的知识,只需要有一个大概的了解即可,在后面的章节中每个设计模式都会有详细的介绍。

     

    一、设计模式的分类

    设计模式有两种分类方法,根据模式的[目的]模式的[作用范围]来分。

    1.1 根据目的来分

    根据模式是用来完成什么工作来划分,这种方式可分为创建型模式结构型模式行为型模式 3 种。

    (1)创建型模式(5种):用于描述“怎样创建对象”,它的主要特点是“将对象的创建与使用分离”。GoF 中提供了单例模式、工厂方法模式、抽象工厂模式、原型模式、建造者模式 5 种创建型模式。

    (2)结构型模式(7种):用于描述如何将类或对象按某种布局组成更大的结构,GoF 中提供了代理模式、适配器模式、桥接模式、装饰模式、外观模式、享元模式、组合模式 7 种结构型模式。

    (3)行为型模式(11种):用于描述类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务,以及怎样分配职责。GoF 中提供了模板模式、策略模式、命令模式、责任链模式、状态模式、观察者模式、中介者模式、迭代器模式、访问者模式、备忘录模式、解释器模式 11 种行为型模式。

     

     

    1.2 根据作用范围来分

           根据模式是主要用于类上还是主要用于对象上来分,这种方式可分为类模式对象模式两种。

    (1)类模式:用于处理类与子类之间的关系,这些关系通过继承来建立,是静态的,在编译时刻便确定下来了。GoF中的工厂方法、(类)适配器、模板方法、解释器属于该模式。

    (2)对象模式:用于处理对象之间的关系,这些关系可以通过组合聚合来实现,在运行时刻是可以变化的,更具动态性。GoF 中除了以上 4 种,其他的都是对象模式。

    说明:

     

    组合(部分与整体的关系):部分与整体是与生俱来的,部分的存在依赖于整体。比如人与人的某个器官,人一出生,器官就在,人死亡,器官也就没了意义。

    聚合(强的关联关系):你与你的电脑(或者其它物品),电脑是属于你的吧,但是你是一出生就拥有了电脑吗,电脑是某个厂商生产出来的,然后你买过来才成为了你的一部分。你死了以后,电脑也可以送给别人继续用啊!这就不叫做其存亡了,所以这是聚合。

     

     

    二、设计模式的功能

           学习说明:简单过一下就可以了,后面章节会详细介绍。

    前面说明了 GoF 的 23 种设计模式的分类,现在对各个模式的功能进行介绍。

    (1)单例(Singleton)模式:某个类只能生成一个实例,该类提供了一个全局访问点供外部获取该实例,其拓展是有限多例模式。

    (2)原型(Prototype)模式:将一个对象作为原型,通过对其进行复制而克隆出多个和原型类似的新实例。

    (3)工厂方法(Factory Method)模式:定义一个用于创建产品的接口,由子类决定生产什么产品。

    (4)抽象工厂(AbstractFactory)模式:提供一个创建产品族的接口,其每个子类可以生产一系列相关的产品。

    (5)建造者(Builder)模式:将一个复杂对象分解成多个相对简单的部分,然后根据不同需要分别创建它们,最后构建成该复杂对象。

    (6)代理(Proxy)模式:为某对象提供一种代理以控制对该对象的访问。即客户端通过代理间接地访问该对象,从而限制、增强或修改该对象的一些特性。

    (7)适配器(Adapter)模式:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。

    (8)桥接(Bridge)模式:将抽象与实现分离,使它们可以独立变化。它是用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度。

    (9)装饰(Decorator)模式:动态的给对象增加一些职责,即增加其额外的功能。

    (10)外观(Facade)模式:为多个复杂的子系统提供一个一致的接口,使这些子系统更加容易被访问。

    (11)享元(Flyweight)模式:运用共享技术来有效地支持大量细粒度对象的复用。

    (12)组合(Composite)模式:将对象组合成树状层次结构,使用户对单个对象和组合对象具有一致的访问性。

    (13)模板方法(TemplateMethod)模式:定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。

    (14)策略(Strategy)模式:定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的改变不会影响使用算法的客户。

    (15)命令(Command)模式:将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。

    (16)责任链(Chain of Responsibility)模式:把请求从链中的一个对象传到下一个对象,直到请求被响应为止。通过这种方式去除对象之间的耦合。

    (17)状态(State)模式:允许一个对象在其内部状态发生改变时改变其行为能力。

    (18)观察者(Observer)模式:多个对象间存在一对多关系,当一个对象发生改变时,把这种改变通知给其他多个对象,从而影响其他对象的行为。

    (19)中介者(Mediator)模式:定义一个中介对象来简化原有对象之间的交互关系,降低系统中对象间的耦合度,使原有对象之间不必相互了解。

    (20)迭代器(Iterator)模式:提供一种方法来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示。

    (21)访问者(Visitor)模式:在不改变集合元素的前提下,为一个集合中的每个元素提供多种访问方式,即每个元素有多个访问者对象访问。

    (22)备忘录(Memento)模式:在不破坏封装性的前提下,获取并保存一个对象的内部状态,以便以后恢复它。

    (23)解释器(Interpreter)模式:提供如何定义语言的文法,以及对语言句子的解释方法,即解释器。

           这 23 种设计模式不是孤立存在的,很多模式之间存在一定的关联关系,在大的系统开发中常常同时使用多种设计模式。

     

     

     

     

    展开全文
  • 设计模式的艺术之道–总结声明:本系列为刘伟老师博客内容总结(http://blog.csdn.net/lovelion),博客中有完整的设计模式的相关博文,以及作者的出版书籍推荐本系列内容思路分析借鉴了刘伟老师的博文内容,同时改用...

    设计模式的艺术之道–设计模式的基本概念

    声明:本系列为刘伟老师博客内容总结(http://blog.csdn.net/lovelion),博客中有完整的设计模式的相关博文,以及作者的出版书籍推荐

    本系列内容思路分析借鉴了刘伟老师的博文内容,同时改用C#代码进行代码的演示和分析(Java资料过多 C#表示默哀).

    系列分为4个部分

    第1部分:基础知识,主要介绍与设计模式相关的基础知识,包
    括设计模式概述、UML 类图、7个面向对象设计原则等内容基础。

    第2部分:创建的艺术,介绍6种常用的创建型设计模式,分别是单例
    模式、简单工厂模式、工厂方法模式、抽象工厂模式、原型模式和建造者模式。

    第3部分:组合的艺术,介绍7种常用的结构型设计模式分别是适配器模式 、 桥接模式、组合模式、装饰模式、外观模式、享元模式和代理模式。

    第4部分: 交互的艺术,介绍 11 种常用的行为型设计模式,分别是职责链模式、 命令模式、解释器模式、迭代器模式、中介者模式备忘录模式、观察者模式 、 状态模式、策略模式、模板方法模式和访问者模式。


    第一部分

    第一章 设计模式的基本概念

    1.1设计模式的定义

    设计模式(Design Pattern)
    - 一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结
    - 是一种用于对软件系统中不断重现的设计问题的解决方案进行文档化的技术
    - 是一种共享专家设计经验的技术
    - 目的:为了可重用代码、让代码更容易被他人理解、提高代码可靠性

    1.2设计模式的分类

    根据目的(模式是用来做什么的)可分为创建型(Creational),结构型(Structural)和行为型(Behavioral)三类:
    - 创建型模式主要用于创建对象
    - 结构型模式主要用于处理类或对象的组合
    - 行为型模式主要用于描述类或对象如何交互和怎样分配职责

    根据范围,即模式主要是处理类之间的关系还是处理对象之间的关系,可分为类模式和对象模式两种:
    - 类模式处理类和子类之间的关系,这些关系通过继承建立,在编译时刻就被确定下来,是一种静态关系
    - 对象模式处理对象间的关系,这些关系在运行时变化,更具动态性
    这里写图片描述

    1.3设计模式的优点

    • 融合了众多专家的经验,并以一种标准的形式供广大开发人员所用
    • 提供了一套通用的设计词汇和一种通用的语言,以方便开发人员之间进行沟通和交流,使得设计方案更加通俗易懂
    • 让人们可以更加简单方便地复用成功的设计和体系结构
    • 使得设计方案更加灵活,且易于修改
    • 将提高软件系统的开发效率和软件质量,且在一定程度上节约设计成本
    • 有助于初学者更深入地理解面向对象思想,方便阅读和学习现有类库与其他系统中的源代码,还可以提高软件的设计水平和代码质量

    1.4设计模式学习作者的观点

    作为设计模式的忠实粉丝和推广人员,在正式学习设计模式之前,我结合多年的模式应用和教育培训经验与大家分享几点个人的看法,以作参考:

    1. 掌握设计模式并不是件很难的事情,关键在于多思考,多实践,一定要有自己的思考和离解过程,只要用心学习,设计模式也就那么回事,你也可以很“牛”的,一定要有信心。

    2. 在学习每一个设计模式时至少应该掌握如下几点:这个设计模式的意图是什么,它要解决一个什么问题,什么时候可以使用它;它是如何解决的,掌握它的结构图,记住它的关键代码;能够想到至少两个它的应用实例,一个生活中的,一个软件中的;这个模式的优缺点是什么,在使用时要注意什么。当你能够回答上述所有问题时,恭喜你,你了解一个设计模式了,至于掌握它,那就在开发中去使用吧,用多了你自然就掌握了。

    3. 学习设计模式的目的在于应用,如果不懂如何使用一个设计模式,而只是学过,能够说出它的用途,绘制它的结构,充其量也只能说你了解这个模式,严格一点说:不会在开发中灵活运用一个模式基本上等于没学。所以一定要做到:少说多做。

    4. 千万不要滥用模式,不要试图在一个系统中用上所有的模式。每个模式都有自己的适用场景,不能为了使用模式而使用模式?滥用模式不如不用模式,因为滥用的结果得不到“艺术品”一样的软件,很有可能是一堆垃圾代码。

    5. 如果将设计模式比喻成“三十六计”,那么每一个模式都是一种计策,它为解决某一类问题而诞生,不管这个设计模式的难度如何,大家都应该好好学学,多学一个模式也就意味着你多了“一计”,说不定什么时候一不小心就用上了。

    6. 设计模式的“上乘”境界:“手中无模式,心中有模式”。模式使用的最高境界是你已经不知道具体某个设计模式的定义和结构了,但你会灵活自如地选择一种设计方案【其实就是某个设计模式】来解决某个问题,设计模式已经成为你开发技能的一部分,能够手到擒来。

    展开全文
  • 命令模式的体现基本概念命令设计模式将一个请求或行动作封装为对象。这个封装请求比原始的请求要灵活并且可以在对象之前被传递,存储,动态修改或者放进队列里面。苹果公司实现这种模式使用Target-Action机制和...
  • 1、概念 单例模式确保一个类只有一个实例,并且提供一个全局访问点 2、实现 单例模式有多种实现方式,不同的实现方式有不同的特点 //多线程不安全的单例模式 //!!!错误的单例,不建议使用 public class ...
  • 在软件开发中,我们经常需要向某些对象发送请求(调用其中的某个或某些方法),但是并不知道...命令模式为此类问题提供了一个较为完美的解决方案。命令模式可以将请求发送者和接收者完全解耦,发送者与接收者之间没有直
  • 基本概念Command 命令模式是一个高内聚的模式(满足单一职责原则) 概念:将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。 命令模式在...
  • 常用命令/etc/init.d/rabbitmq-server start|stop|restart|reloadrabbitmqctl add_vhost vhostname ##创建vhostrabbitmqctl delete_vhost vhostname ##删除vhostrabbitmqctl list_vhosts ##变量所有的虚拟主机信息...
  • 设计模式概念

    千次阅读 2016-11-03 19:05:41
    设计模式概念设计模式是什么它是一套理论,由软件界的先辈们GOF总结出的一套可以反复使用的经验,它可以提高代码的可重用性,增强系统的可维护性,以及解决一系列的复杂问题。做软件的人都知道需求是最难把握的,...
  • 命令模式概述 在软件系统中,“行为请求者”与“行为实现者”通常呈现一种“紧耦合”。但在某些场合,比如要对行为进行“记录、撤销/重做、事务”等处理,这种无法抵御变化的紧耦合是不合适的。在这种情况下,如何将...
  • 最近我女朋友,有点小脾气呐。咋说呐?干啥都不自己干了。你看说曹操曹操就到。 女朋友:亲爱的,替我去买个机票呗。... 当然又有点像是命令模式,这个不要在意…. ^_^ 一、代理模式(proxy)基本概念...
  • 这篇文章将与大家聊一聊游戏开发中命令模式的用法。命令模式的成名应用是实现诸如撤消,重做,回放,时间倒流之类的功能。如果你想知道《Dota2》中的观战系统、《魔兽争霸3》中的录像系统、《守望先锋》的全场最佳...
  • 【Kubernetes】浅析基本概念和原理

    万次阅读 2021-05-30 12:44:12
    摘要:本文从 Kubernetes (K8S) 的几个核心概念入手,对 K8S 的整体架构设计进行了概括性分析,进而对 K8S 的认证、授权、准入控制的相关内容进行了介绍。 1 核心概念和架构设计 1.1 概念与层级关系 Image 镜像的...
  • Java设计模式概念

    千次阅读 2014-06-24 16:49:59
    设计模式(Design Patterns)  ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被...
  • Linux学习与开发基本概念汇总

    千次阅读 2015-07-22 13:37:38
    最近在翻翻大学时候学过的Linux资料,整理出之前做过的Linux笔记,包含了Linux最基本概念和知识。当时可能是为了应付考试而做的吧。现在拿出来和大家一起分享。 第一章 1. Linux是多用户、多任务操作系统。 2. ...
  • 这些默认是off,即循环日志模式,如为"Yes"或"Recovery",则表明为归档日志模式. Unix/Linux下的查看命令:  DB2 v9及以前版本:  db2 get db cfg for  sample |grep "USEREXIT"  db2 get db ...
  • SoC FPGA 的基本概念

    千次阅读 2019-01-07 19:37:05
    下面介绍一下关于SoC FPGA的基本概念和学习方法: SoC的定义多种多样,由于其内涵丰富、应用范围广,很难给出准确定义。一般说来, SoC称为系统级芯片,也有称片上系统,意指它是一个产品,是一个有专用目标的集成...
  • 新手学Python之掌握基本概念

    万次阅读 多人点赞 2021-02-25 10:59:25
    如何学习基本概念2.1 理解基本概念的字面意思2.1.1 学习神器一2.1.2 学习神器二2.2 边实践边思考 1. 为什么要学习基本概念   在任何学科的学习中,基本概念是学习的基础。正如在金字塔中,最核心也的是底层基础。...
  • RabbitMQ01-基本概念和基本使用

    万次阅读 2020-10-06 20:19:54
    本文主要讲解 RabbitMQ的相关概念,以及一些基本操作,还有和JAVA整合的代码操作,SpringBoot和RabbitMQ的整合
  • Android中gradlew命令基本使用

    万次阅读 2018-07-11 21:12:08
    Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML 的各种繁琐配置。 面向Java应用为主。当前其支持的语言限于Java、...
  • 云计算云存储的一些基本概念

    万次阅读 多人点赞 2018-04-12 20:10:04
    我们在学习云计算和云存储之前,需要先了解一些很常见的基本概念,否则在学习过程中和选型时会比较晕。 云计算的三种服务模式:IaaS,PaaS和SaaS 云的分层 任何一个在互联网上提供其服务的公司都可以叫做云计算...
  • neo4j︱图数据库基本概念、操作罗列与整理(一)

    千次阅读 多人点赞 2018-04-10 16:40:06
    图数据库常规的有:neo4j(支持超多语言)、JanusGraph/Titan(分布式)、...neo4j︱图数据库基本概念、操作罗列与整理(一) neo4j︱Cypher 查询语言简单案例(二) neo4j︱Cypher完整案例csv导入、关系联通、...
  • 计算机基本概念

    千次阅读 2016-04-06 19:39:59
    计算机基本概念 一、计算机系统  xxx 二、操作系统  xxx 三、计算机网络  计算机网络的组成包括硬件和软件。其中硬件主要包含主机、网卡、路由器等;软件包括协议和应用软件。  计算机网络的分类,按距离可...
  • NSQ基本概念

    千次阅读 2018-08-24 17:42:11
    核心概念 在讨论NSQ如何在实践中使用前,先理解NSQ队列的架构原理是非常值得的。它的设计很简单,可以通过几个核心概念来理解。 Topic ——一个topic就是程序发布消息的一个逻辑键,当程序第一次发布消息时就会...
  • 设计模式是软件大师们根据多年来的软件开发经验,对软件开发领域包括合理复用、提高健壮性、减少BUG等各方面作的抽象总结,不同的设计模式方法适合于不同的应用场景,是汇结了他们最宝贵的经验总结。最早的开发模式...
  • 蓝牙基本概念

    千次阅读 2014-12-22 14:23:28
    之前查看过蓝牙协议分析_基本概念对蓝牙有了一个整体的概念,最近闲暇无事稍稍看了下蓝牙协议规范,对蓝牙相关的概率有了一定的了解。接下来的文章都是对自己的学习内容的整理,由于自己的水平有限,错误也在所难免...
  • Vulkan API基本概念

    万次阅读 2016-03-05 22:36:30
    WSI用了列举系统的显示设备和视频模式,全屏,控制显示垂直同步等。 Presenta跟命令缓冲一起进入队列。 资源创建和释放 资源包括CPU资源和GPU资源。 CPU资源通过vkCreate创建,GPU资源由vkAllocMemory创建,由...
  • SPI基本概念详解

    千次阅读 2014-05-11 15:37:43
    同步外设接口(SPI)是由摩托罗拉公司开发的全...根据以上分析,一个完整的传送周期是16位,即两个字节,因为,首先主机要发送命令过去,然后从机根据主机的名准备数据,主机在下一个8位时钟周期才把数据读回来!!

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 191,363
精华内容 76,545
关键字:

命令模式的基本概念