Code Monkey home page Code Monkey logo

designpattern's Introduction

Design Pattern

设计模式

简介

参考书籍 《图解设计模式》,实现各种设计模式

使用C++11实现

Build status

Linux Windows Coveralls
lin-badge win-badge cov-badge

License

License

进度

类型 模式 说明
创建型 工厂方法模式 工厂方法模式
创建型 抽象工厂模式 抽象工厂模式
创建型 构建模式 构建模式
创建型 单例模式 单例模式
创建型 原型模式 原型模式
结构型 复合模式 复合模式
结构型 适配器模式 类适配器模式 对象适配器模式
结构型 装饰模式 装饰模式
结构型 窗口模式 窗口模式
结构型 轻量模式 轻量模式
结构型 代理模式 代理模式
结构型 桥接模式 桥接模式
行为型 迭代器模式 迭代器模式
行为型 模板方法模式 模板方法模式
行为型 策略模式 策略模式
行为型 访问者模式 访问者模式
行为型 责任链模式 责任链模式
行为型 仲裁者模式 仲裁者模式
行为型 观察者模式 观察者模式
行为型 备忘录模式 备忘录模式
行为型 状态模式 状态模式
行为型 命令模式 命令模式
行为型 解释器模式 解释器模式

总结

创建型模式

创建型模式对类的实例化过程进行抽象,将软件中对象的创建和使用分离。 为了使软件的结构更加清晰,外界对于这些对象只需要知道共同的接口,而不清楚其内部实现细节,使整个系统的设计更加符合单一职责原则。

创建型模式在创建什么(what) 、由谁创建(who)、何时创建(when)等方面都为软件设计者提供了尽可能大的灵活性,隐藏了类的实例创建细节,通过隐藏对象 如何被创建和组合在一起,达到整个系统独立的目的

结构型模式

描述如何将类和对象结合在一起形成更大的结构,就像搭积木,通过简单积木的组合形成结构复杂、功能强大的结构 分为 类结构型模式 和 对象结构型模式:

  • 类结构型模式

关心类的组合,由多个类可以组合成一个更大的 系统,在类结构型模式中一般只存在继承关系和实现关系

  • 对象结构型模式

关心类与对象的组合,通过关联关系使得在一 个类中定义另一个类的实例对象,然后通过该对象调用其方法。 根据“合成复用原则”,在系统中尽量使用关联关系来替代继 承关系,因此大部分结构型模式都是对象结构型模式。

行为型模式

对不同的对象之间划分责任和算法的抽象。 行为型模式不仅仅关注类和对象的结构,而且重点关注它们之间的相互作用。 通过行为型模式,可以更加清晰地划分类与对象的职责,并研究系统在运行时实例对象 之间的交互。在系统运行时,对象并不是孤立的,它们可以通过相互通信与协作完成某些复杂功能,一个对象在运行时也将影响到其他对象的运行。

行为型模式分为类行为型模式和对象行为型模式两种:

  • 类行为型模式

    类的行为型模式使用继承关系在几个类之间分配行为,类行为型模式主要通过多态等方式来分配父类与子类的职责。

  • 对象行为型模式

    对象的行为型模式则使用对象的聚合关联关系来分配行为,对象行为型模式主要是通过对象关联等方式来分配两个或多个类的职责。根据“合成复用原则”,系统中要尽量使用关联关系来取代继承关系,因此大部分行为型设计模式都属于对象行为型设计模式。

联系方式:


作者 贾文涛
QQ 759378563
微信 xsd2410421
邮箱 [email protected]
blog https://wentaojia2014.github.io/
请放心联系我,乐于提供相关帮助

打赏

觉得分享的内容还不错, 就请作者喝杯咖啡吧~~

designpattern's People

Contributors

jaredtao avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.