设计模式
qq_15140841
结果比开始重要,过程比结果重要。
展开
-
设计模式-行为型模式-职责链模式
职责链模式基本介绍职责链模式(Chain of Responsibility Pattern),又叫 责任链模式,为请求创建了一个 接收者对象的 链( 简单示意图) 。这种模式对请求的发送者和接收者进行解耦 职责链模式通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。 这种类型的设计模式属于行为型模式职责链模式的注...原创 2020-02-08 17:06:19 · 215 阅读 · 0 评论 -
设计模式-行为型模式-策略模式
策略模式基本介绍1) 策略模式(Strategy Pattern)中,定义算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户2) 这算法体现了几个设计原则,第一、把变化的代码从不变的代码中分离出来;第二、针对接口编程而不是具体类(定义了策略接口);第三、多用组 合/ 聚合,少用继承(客户通过组合方式使用策略 )策 略模式的注意事项和细 节1) 策略模式...原创 2020-02-08 17:00:18 · 100 阅读 · 0 评论 -
设计模式-行为型模式-状态模式
状态模式基本介绍1) 状态模式(State Pattern):它主要用来解决对象在多种状态转换时,需要对外输出不同的行为的问题。状态和行为是一一对应的,状态之间可以相互转换2) 当一个对象的内在状态改变时,允许改变其行为,这个对象看起来像是改变了其类。/** * 状态抽象类 * @author Administrator * */public abstract class S...原创 2020-02-08 16:14:44 · 108 阅读 · 0 评论 -
设计模式-行为型模式-解释器模式
四则运算问题通过解释器模式来实现四则运算,如计算a+b-c的值,具体要求1) 先输入表达式的形式,比如 a+b+c-d+e, 要求表达式的字母不能重复2) 在分别输入a ,b, c, d, e 的值传统方案解决四则运算问题分析1) 编写一个方法,接收表达式的形式,然后根据用户输入的数值进行解析,得到结果2) 问题分析:如果加入新的运算符,比如 * / ( 等等,不利于扩展,另外让一个...原创 2020-02-08 15:53:54 · 110 阅读 · 0 评论 -
设计模式-行为型模式-备忘录模式
传统的方式的问题分析1) 一个对象,就对应一个保存对象状态的对象, 这样当我们游戏的对象很多时,不利于管理,开销也很大.2) 传统的方式是简单地做备份,new出另外一个对象出来,再把需要备份的数据放到这个新对象,但这就暴露了对象内部的细节3) 解决方案: => 备忘录模式备忘录模式基本介绍1) 备忘录模式(Memento Pattern)在不破坏封装性的前提下,捕获一个对象...原创 2020-02-08 11:35:46 · 164 阅读 · 0 评论 -
设计模式-行为型模式-中介者模式
中介者模式基本介绍1) 中介者模式(Mediator Pattern ),用一个中介对象来封装一系列的对象交互。中介者使各个对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互2) 中介者模式属于行为型模式,使代码易于维护3) 比如MVC模式,C(Controller控制器)是M(Model模型)和V(View视图)的中介者,在前后端交互时起到了中间人的作用...原创 2020-02-08 11:04:58 · 110 阅读 · 0 评论 -
设计模式-行为型模式-观察者模式
天气预报项目需求,具体要求如下:1) 气象站可以将每天测量到的温度,湿度,气压等等以公告的形式发布出去(比如发布到自己的网站或第三方)。2) 需要设计开放型API,便于其他第三方也能接入气象站获取数据。3) 提供温度、气压和湿度的接口4) 测量数据更新时,要能实时的通知给第三方public class CurrentConditions {private float tempera...原创 2020-02-08 10:37:52 · 149 阅读 · 0 评论 -
设计模式-行为型模式-迭代器模式
迭代器模式基本介绍1) 迭代器模式(Iterator Pattern)是常用的设计模式,属于行为型模式2) 如果我们的集合元素是用不同的方式实现 的,有数组,还有java的集合类,或者还有其他方式,当客户端要 遍历这 些 集合 元 素 的时候就要使用多种遍历方式,而且还会暴露元素的内部结构,可以考虑使用迭代器模式解决。3) 迭代器模式,提供一种遍历集合元素的统一接口,用一致的方法遍历集合元...原创 2020-02-08 10:04:54 · 111 阅读 · 0 评论 -
设计模式-行为型模式-访问者式模
访问者模式基本介绍1) 访问者模式(Visitor Pattern ),封装一些作用于某种数据结构的各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。2) 主要将数据结构与数据操作分离,解决数据结构和操作耦合性问题3) 访问者模 式的基本工作原理是:在被访问的类里面加一个对外提供接待访问者的接口4) 访问者模 式 主 要应用场景是:需要对一个对象结构中的对象进...原创 2020-02-07 17:59:25 · 275 阅读 · 0 评论 -
设计模式-行为型模式-命令模式
命令模式基本介绍1) 命令模式(Command Pattern):在软件设计中,我们经常需要向某些对象发送请求,但是并不知道请求的接收者是谁,也不知道被请求的操作是哪个,我们只需在程序运行时指定具体的请求接收者即可,此时可以使用命令模式来进行设计。2) 命名模式使得请求发送者与请求接收者消除彼此之间的耦合,让对象之间的调用关系更加灵活,实现解耦。3) 在命名模式中,会将一个请求封装为...原创 2020-02-07 17:45:01 · 152 阅读 · 0 评论 -
设计模式-行为型模式-模板方法模式
基本介绍1) 模板方法模式(Template Method Pattern),又叫模板模式(Template Pattern),在一个抽象类公开定义了执行它的方法的模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。2) 简单说, 模板方法模 式 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构,就可以重定义该算法的某些特定步骤3)...原创 2020-02-07 17:25:09 · 139 阅读 · 0 评论 -
设计模式-结构型模式-代理模式
代理模式的基本介绍1) 代理模式:为一个对象 提供一个替身,以控制对这个对象的访问。即通过代理对象访问目标对象.这样做的 好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。2) 被代理的对象可以是 远程对象、 创建开销大的对象或 需要安全控制 的 对象3) 代理模式有不同的形式, 主要有三种 静态代理、动态代理 (JDK 代理、接口代理)和 Cglib代 代理...原创 2020-02-04 15:54:57 · 147 阅读 · 0 评论 -
设计模式-结构型模式-享元模式
小型的外包项目,给客户A做一个产品展示网站,客户A的朋友感觉效果不错,也希望做这样的产品展示网站,但是要求都有些不同:1) 有客户要求以新闻的形式发布2) 有客户人要求以博客的形式发布3) 有客户希望以微信公众号的形式发布1) 需要的网站结构 相似度很高,而且都不是高访问量网站,如果分成多个虚拟空间来处理,相当于一个相同网站的实例对象很多,造成服务器的资源浪费2) 解决思路:整合到一个...原创 2020-02-03 19:11:26 · 156 阅读 · 0 评论 -
设计模式-结构型模式-外观模式
组建一个家庭影院:DVD播放器、投影仪、自动屏幕、环绕立体声、爆米花机,要求完成使用家庭影院的功能,其过程为:• 直接用遥控器:统筹各设备开关• 开爆米花机• 放下屏幕• 开投影仪• 开音响• 开DVD,选dvd• 去拿爆米花• 调暗灯光• 播放• 观影结束后,关闭各种设备传 统方式解决影院管理ClientTest {public static void main()...原创 2020-02-03 15:38:02 · 146 阅读 · 0 评论 -
设计模式-结构型模式-组合模式
传统方案解决学校院系展示存在的问题分析1) 将学院看做是学校的子类,系是学院的子类,这样实际上是站在组织大小来进行分层次的2) 实际上我们的要求 是 :在一个页面中展示出学校的院系组成,一个学校有多学院,一个学院有多个系, 因此这种方案,不能很好实现 的管理的 操作,比如对学院、系的添加,删除,遍历等3) 解决方案:把学校、院、系 都看做 是组织结构,他们之间没有继承的关系,而是一个树形结构...原创 2020-02-03 14:59:09 · 162 阅读 · 0 评论 -
设计模式-结构型模式-装饰者模式
方 案1- 解决星巴克咖啡订单问题分析1) Drink 是一个抽象类,表示饮料2) des就是对咖啡的描述, 比如咖啡的名字3) cost() 方法就是计算费用,Drink 类中做成一个抽象方法.4) Decaf 就是单品咖啡, 继承Drink, 并实现cost5) Espress && Milk 就是单品咖啡+调料, 这个组合很多6) 问题:这样设计,会有很多类,当我...原创 2020-02-03 14:27:12 · 129 阅读 · 0 评论 -
设计模式-结构型模式-桥接模式
桥接式 模式(Bridge)- 基本介绍1) 桥接模式(Bridge模式)是指:将实现与抽象放在两个不同的类层次中,使两个层次可以独立改变。2) 是一种结构型设计模式3) Bridge模式基于类的最小设计原则,通过使用封装、聚合及继承等行为让不同的类承担不同的职责。它的主要特点是把抽象(Abstraction)与行为实现(Implementation)分离开来,从而可以保持各部分的独立性以及...原创 2020-02-03 13:41:06 · 208 阅读 · 0 评论 -
设计模式-结构型模式-适配器模式
适 配器模 式 基 本介绍1) 适配器模式(Adapter Pattern)将某个类的接口转换成客户端期望的另一个接口表示,主的目的是兼容性,让原本因接口不匹配不能一起工作的两个类可以协同工作。其别名为包装器(Wrapper)2) 适配器模式属于结构型模式3) 主要分为三类:类适配器模式、对象适配器模式、接口适配器模式工作原理1) 适配器模式:将一个类的接口转换成另一种接口.让 原本...原创 2020-02-03 11:29:14 · 142 阅读 · 0 评论 -
设计模式-创建型模式- 建造者模式
1) 建造者模式(Builder Pattern ) 又叫生成器模式,是一种对象构建模式。它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象。2) 建 造者模式 是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以构建它们,用户不需要知道内部的具体构建细节。建造者模式的四个角色1) Product (产品...原创 2020-02-02 17:35:39 · 174 阅读 · 0 评论 -
设计模式-创建型模式-原型模式
1) 原型模式(Prototype模式)是指:用原型实例指定创建对象的种类,并且通过拷贝这些原型,创建新的对象2) 原型模式是一种创建型设计模式,允许一个对象再创建另外一个可定制的对象,无需知道如何创建的细节3) 工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建,即对象.clone()public class DeepPr...原创 2020-02-02 15:49:38 · 122 阅读 · 0 评论 -
设计模式-创建型模式-抽象工厂模式
1) 抽象工厂模式:定义了一个interface用于创建相关或有依赖关系的对象簇,而无需指明具体的类2) 抽象工厂模式可以将 简单工厂模式和 工厂方法模式进行整合。3) 从设计层面看,抽象工厂模式就是对简单工厂模式的改进(或者称为进一步的抽象)。4) 将工厂抽象成两层,AbsFactory(抽象工厂) 和 具体实现的工厂子类。程序员可以根据创建对象类型使用对应的工厂子类。这样将单个的简单工厂...原创 2020-02-02 15:02:39 · 142 阅读 · 0 评论 -
设计模式-创建型模式-工厂方法模式
工厂方法模式介绍工厂方法模式设计方案:将披萨项目的实例化功能抽象成抽象方法,在不同的口味点餐子类中具体实现。工厂方法模式:定义了一个创建对象的抽象方法,由子类决定要实例化的类。工厂方法模式将对象的实例化推迟到子类。//将Pizza 类做成抽象public abstract class Pizza { protected String name; //名字 //准备原材料, 不同的...原创 2020-02-02 14:40:53 · 105 阅读 · 0 评论 -
设计模式-创建型模式-简单工厂模式
传统的方式的优缺点1) 优点是比较好理解,简单易操作。2) 缺点是违反了设计模式的ocp原则,即对扩展开放,对修改关闭。即当我们给类增加新功能的时候,尽量不修改代码,或者尽可能少修改代码 //简单工厂模式 也叫 静态工厂模式 public static Pizza createPizza2(String orderType) { Pizza pizza = null; ...原创 2020-02-02 14:30:24 · 99 阅读 · 0 评论 -
设计模式-创建型模式-单例模式
所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法(静态方法)。比如Hibernate的SessionFactory,它充当数据存储源的代理,并负责创建Session对象。SessionFactory并不是轻量级的,一般情况下,一个项目通常只需要一个SessionFactory就够,这是就会使用到单例模式。1...原创 2020-02-02 13:56:29 · 100 阅读 · 0 评论 -
设计模式常用的七大原则
1) 单一职责原则2) 接口隔离原则3) 依赖倒转原则4) 里氏替换原则5) 开闭原则 ocp6) 迪米特法则7) 合成复用原则设计模式的目的编写软件过程中,程序员面临着来自 耦合性,内聚性以及可维护性,可扩展性,重用性,灵活性 等多方面的挑战,设计模式是为了让 序 程序( 软件) ,具有更好:1) 代码重用性 (即:相同功能的代码,不用多次编写)2) 可读性 (即:编...原创 2020-01-05 11:07:40 · 315 阅读 · 0 评论