代码改变世界

随笔分类 -  Design Parttern

【设计模式】组合模式实现二叉树先序遍历,中序遍历和后序遍历

2018-08-21 08:26 by 蓝之风, 3643 阅读, 收藏, 编辑
摘要: 二叉树的基本概念 在计算机中,二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。 二叉树是一个连通的无环图,并且每一个顶点的度不大于3。有根二叉树还要满足根结点的度不大于2。有了根节点之后,每个顶点定义了唯一的父节 阅读全文

【设计模式】组合模式 Composite Pattern

2018-08-20 08:39 by 蓝之风, 1071 阅读, 收藏, 编辑
摘要: 树形结构是软件行业很常见的一种结构,几乎随处可见, 比如: HTML 页面中的DOM,产品的分类,通常一些应用或网站的菜单,Windows Form 中的控件继承关系,Android中的View继承关系,部门的组织架构,Windows 资源管理器 等等都是树形结构。 Windows 资源管理 树形结 阅读全文

【设计模式】桥接模式 Bridge Pattern

2018-08-17 23:53 by 蓝之风, 1305 阅读, 收藏, 编辑
摘要: 开篇还是引用吕振宇老师的那篇经典的文章《设计模式随笔-蜡笔与毛笔的故事》。这个真是太经典了,没有比这个例子能更好的阐明桥接模式了,这里我就直接盗来用了。 现在市面上卖的蜡笔很多,各种型号,各种颜色种类繁多, 假如一盒蜡笔有24种颜色,那么它能涂抹出24种不同的颜色来,蜡笔型号是固定的,如果想画出各种 阅读全文

【设计模式】适配器模式 Adapter Pattern

2018-08-08 08:37 by 蓝之风, 1048 阅读, 收藏, 编辑
摘要: 适配器模式在软件开发界使用及其广泛,在工业界,现实中也是屡见不鲜。比如手机充电器,笔记本充电器,广播接收器,电视接收器等等。都是适配器。 适配器主要作用是让本来不兼容的两个事物兼容和谐的一起工作。比如, 通常我们使用的交流电都是220v,但是手机电池能够承载的5v电压,因此直接将我们使用的220v交 阅读全文

【设计模式】原型模式 Pototype Pattern

2018-08-06 08:45 by 蓝之风, 1247 阅读, 收藏, 编辑
摘要: 前面讲了创建一个对象实例的方法单例模式Singleton Pattern, 创造多个产品的工厂模式(简单工厂模式 Simple Factory Pattern, 工厂方法模式 FactoryMothed Pattern,抽象工厂模式 Abstract Factory Method),以及创建复杂对象 阅读全文

【设计模式】单例模式 Singleton Pattern

2018-08-05 09:01 by 蓝之风, 1055 阅读, 收藏, 编辑
摘要: 通常我们在写程序的时候会碰到一个类只允许在整个系统中只存在一个实例(Instance) 的情况, 比如说我们想做一计数器,统计某些接口调用的次数,通常我们的数据库连接也是只期望有一个实例。Windows系统的系统任务管理器也是始终只有一个,如果你打开了windows管理器,你再想打开一个那么他还是同 阅读全文

【设计模式】建造者模式 Builder Pattern

2018-08-04 10:54 by 蓝之风, 912 阅读, 收藏, 编辑
摘要: 前面学习了简单工厂模式,工厂方法模式以及抽象工厂模式,这些都是创建类的对象所使用的一些常用的方法和套路, 那么如果我们创建一个很复杂的对象可上面的三种方法都不太适合,那么“专业的事交给专业人去做”,23设计模式总有一个模式是适合这种复杂对象的创建。比如现在的智能手机组成, 它包括一个屏幕,摄像头,耳 阅读全文

【设计模式】抽象工厂模式 Abstract Factory Pattern

2018-07-30 08:15 by 蓝之风, 1473 阅读, 收藏, 编辑
摘要: 简单工厂模式是一个工厂类根据工厂方法的参数创建不出不同的产品, 工厂方法模式是每一个产品都有一个一一对应的工厂负责创建该产品。那么今天要讲的抽象工厂模式是一个工厂能够产生关联的一系列产品。抽象工厂模式相对于简单工厂和工厂方法模式来着更具抽象性。 一、抽象工厂模式演绎 我们先来看一个简单的需求: 甲方 阅读全文

【设计模式】工厂方法模式 Factory Method Pattern

2018-07-24 13:35 by 蓝之风, 1746 阅读, 收藏, 编辑
摘要: 在简单工厂模式中产品的创建统一在工厂类的静态工厂方法中创建,体现了面形对象的封装性,客户程序不需要知道产品产生的细节,也体现了面向对象的单一职责原则(SRP),这样在产品很少的情况下使用起来还是很方便, 但是如果产品很多,并且不断的有新产品加入,那么就会导致静态工厂方法变得极不稳定,每次加入一个新产品就要修改静态工厂方法,这违背了面向对象设计原则的开闭原则(OCP)。那么在应对这种不断增加的新产品... 阅读全文

【设计模式】简单工厂模式 Simple Factory Pattern

2018-07-19 16:24 by 蓝之风, 1563 阅读, 收藏, 编辑
摘要: 简单工厂模式Simple Factory Pattern【Simple Factory Pattern】是设计模式里最简单的一个模式,又叫静态工厂模式【Static Factory Pattern】,这个模式没有收录在GOF 23 个模式中,因为他非常简单,在项目中使用也非常广泛,所以就用它来开篇。 一、简单工厂模式定义: 简单工厂模式(Simple Factory Pattern):定义一个工... 阅读全文

【设计模式】概述

2017-06-23 17:33 by 蓝之风, 1130 阅读, 收藏, 编辑
摘要: 设计模式概念 引用《设计模式-可复用的面相对像设计》对模式的定义是这样的:【Christopher Alexander 说过: “每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复劳动”, 尽管Alexander所指的是城市和 阅读全文

【面向对象设计原则】之接口隔离原则(ISP)

2017-05-27 16:39 by 蓝之风, 3457 阅读, 收藏, 编辑
摘要: 接口隔离原则(Interface Segregation Principle, ISP):使用多个专门的接口,而不使用单一的总接口,即客户端不应该依赖那些它不需要的接口。 从接口隔离原则的定义可以看出,他似乎跟SRP有许多相似之处。 是的其实ISP和SRP都是强调职责的单一性, 接口隔离原则告诉我们 阅读全文

【面向对象设计原则】之依赖倒置原则(DIP)

2017-05-25 16:17 by 蓝之风, 9062 阅读, 收藏, 编辑
摘要: 依赖倒置原则(Dependency Inversion Principle, DIP):抽象不应该依赖于细节,细节应当依赖于抽象。换言之,要针对抽象(接口)编程,而不是针对实现细节编程。 开闭原则(OCP)是面向对象设计原则的基础也是整个设计的一个终极目标,而依赖倒置原则(DIP )则是实现OCP原 阅读全文

【面向对象设计原则】之里氏替换原则(LSP)

2017-05-24 15:59 by 蓝之风, 2952 阅读, 收藏, 编辑
摘要: 里氏代换原则由2008年图灵奖得主、美国第一位计算机科学女博士Barbara Liskov教授和卡内基·梅隆大学Jeannette Wing 教授于1994年提出,所以使用的是这位女博士的性命名的一个设计原则。 里氏替换原则(Liskov Substitution Principle, LSP):所 阅读全文

【面向对象设计原则】之开闭原则(OCP)

2017-05-23 16:21 by 蓝之风, 3796 阅读, 收藏, 编辑
摘要: 开闭原则是面向对象设计的一个重要原则,其定义如下: 开闭原则(Open-Closed Principle, OCP):一个软件实体应当对扩展开放,对修改关闭。即软件实体应尽量在不修改原有代码的情况下进行扩展。 在软件的生命周期内,因为变化、升级和维护等原因需要对软件原有代码进行修改时,可能会给旧代码 阅读全文

【面向对象设计原则】之单一职责原则(SRP)

2017-05-19 11:21 by 蓝之风, 2159 阅读, 收藏, 编辑
摘要: 单一职责原则是面向对象原则五大原则中最简单,也是最重要的一个原则, 他的字面定义如下: 单一职责原则(Single Responsibility Principle, SRP): 一个类只负责一个功能领域中的相应职责,或者可以定义为:就一个类而言,应该只有一个引起它变化的原因。 从定义中可以看出在定 阅读全文

【面向对象设计原则】之原则概述

2017-03-24 14:16 by 蓝之风, 1735 阅读, 收藏, 编辑
摘要: 在面向对象的软件设计过程中,一切皆抽象成对象,在一个复杂的软件系统中有成千上万甚至百万千万级的对象,那么这么多对象怎么去有效的管理?怎么样去重复利用?怎么去科学合理的组合使其能够融为一体并且可以顺利的工作,这是在面向对象设计中着重需要考虑的问题,那么我们的前辈有没有给我们留下来一些科学的指导原则来处 阅读全文

设计模式综述

2008-04-23 16:37 by 蓝之风, 323 阅读, 收藏, 编辑
摘要: 设计模式是针对一种或者一类问题提出来的一种或者一类解决方法。一直想学习设计模式,平常也看了些资料,在园子里也看过很多人对设计模式的分析和讲述,看过就忘记了,所以这次,就把学习过程中的一些内容写在这里,当成是学习笔记和学习心得。方便以后查阅。 阅读全文