设计模式学习

  到最后还是还是回到了设计模式的学习上面了,之前一直在看一些c++的技术书,主要是关于语法等方面的用法,一直没关心代码的组织,最近开始看了设计模式,也是一些简单的见解,毕竟自己还没做过大项目,呵呵,自己把自己理解的写下来,方便以后查阅。

      下面是设计模式的分类,主要分为三大类。

      一是创建型模式,主要是负责对象的创建。

      二是结构型模式,负责类之间的相互组织。

      三是行为型模式,更关心算法和对象间任务分配,以及相互通信。

     (理解的不太全面)

 

创建型模式主要包括:Factory(工厂),AbstractFactory(抽象工厂),Singleton(单例),Builder(建造),Prototype(原型)。

结构型模式则分为:Bridge(桥接),Adapter(适配器),Decorator(装饰),Composite(组合),Flyweight(享元),Facade(外观),Proxy(代理)。

行为型模式为:Template(模板),Strategy(策略),State(状态),Observer(观察),Memento(备忘录),Mediator(中介),Command(命令),Vistor(访问者),Chain of Responsibility(职责链),Iterator(迭代器),Interpreter(解释器)。

当然,他们都是思想,所以当我学习的时候,是抱着学习思想的态度去进行学习的,当然思路想明白了,代码架子也就能搭建出来了。

   

复习之前先回忆下UML类图

类图关系一般常用的分为四种,关联,依赖,组合/聚合,泛化(继承)。

1.关联

双向关联:

class C1 
{
public:
    C2* theC2;

};
class C2 
{
public:
    C1* theC1;

};

单向关联:

Class C3

{

Public:

C4* theC4;

};

Class C4

{};

自身关联:

Class C14

{

Public:

C14* theC14;

}

2.组合/聚合

聚合:C10可以脱离C9独立存在(某个领域,可以看下下面的组合部分)

Class C9

{

Public:

C10 theC10;

};

Class C10

{};

组合:说明C8是C7不可脱离的一部分,例如:鸟类中的翅膀是鸟的一本分,当前领域离开了鸟单独存在,就没有意义了,当然在其他领域,如各类翅膀中,它又有意义,所以是相对的。

Class C7

{

Public:

C8 theC8;

};

Class C8

{}

3.依赖

依赖:C5可能用到C6的一些方法。

#include “C6.h”

Class C5

{

Public:

 Void Func(C6* theC6);

};

4.泛化(继承)

继承:(都懂的)

#include “C11.h”

Class C12 : public C11

{};

另外还有个模板

Template<int>

Class C13

{};

下面则是设计中的几个重要的原则:

一切的原则都是追求高内聚和低耦合。。。

单一职责原则(SRP):就一个类而言,应该仅有一个引起它变化的原因。

开放-封闭原则:软件实体(类,模块,函数)应该可以扩展,但不可修改。

依赖倒转原则:高层模块不应该依赖低层模块,两个都应该依赖抽象;抽象不应该依赖细节,细节应该依赖抽象。

里氏代换原则(LSP):子类型必须能够替换掉它们的父类型。

迪米特法则(LoD):如果两个类不必彼此直接通信,那么这两个类就不应该发生直接的相互作用,如果其中一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用。

今天到了这里,明天开始写工厂模式。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值