![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 77
汉森X
哈工大计算机系学生
展开
-
Java设计模式学习02——工厂模式
工厂模式工厂模式主要是为创建对象提供接口,将创建对象的过程隔离起来,实现了创建者与调用者的分离,提高了程序的灵活性。 核心本质:实例化对象,用工厂方法代替new操作。将选择实现类、创建对象统一管理和控制,从而将调用者跟我们实现类解耦。工厂模式分类:简单工厂模式(Simple Factory)工厂方法模式(Factory Method)抽象工厂模式(Abstract Factory)一原创 2016-10-24 12:39:24 · 2051 阅读 · 0 评论 -
Java设计模式学习03——建造者模式
一、场景 当需要生产一辆汽车时,我们需要为其装配发动机、轮胎、座椅等等部件,这个装配过程是比较复杂的而且也需要较高的组装技术。而建造者模式(Builder Pattern)就是为了将部件与组装分离开。二、 概念 将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。 与抽象工厂的区别:在建造者模式里,有个指导者,由指导者来管理建造者,用户是与指导者联系的,指原创 2016-10-25 16:24:42 · 13743 阅读 · 9 评论 -
Java设计模式15——命令模式
一、介绍命令模式:将一个请求封装为对象,从而使我们可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。也称为:动作(Action)模式、事务(transaction)模式。二、模式结构Command抽象命令类: 声明执行操作的接口。ConcreteComand具体命令类:通常持有 一个接收者对象并绑定于一个动作, 调用接收者相应的操作,以实现execute方法。I原创 2016-11-12 21:49:58 · 731 阅读 · 0 评论 -
Java设计模式18——状态模式
一、定义状态(State)模式又称为状态对象模式(Pattern of Objects for State),状态模式是对象的行为模式。状态模式允许一个对象在其内部状态改变时改变其行为,用于解决系统中复杂对象的状态装换以及不同状态下行为的封装问题。状态和行为: 所谓对象的状态,通常指的就是对象实例的属性的值;而行为指的就是对象的功能,再具体点说,行为大多可以对应到方法上。 状态模式的功能就是原创 2016-11-16 19:46:08 · 22881 阅读 · 8 评论 -
Java设计模式学习07——桥接模式
一、场景商城系统中常见的商品分类,以电脑为例,如何良好的处理商品分类销售的问题?我们可以用多层继承实现下图的关系:实现代码如下:public interface Computer { void sale();}class Desktop implements Computer{ @Override public void sale() { System.o原创 2016-11-01 20:03:31 · 1391 阅读 · 1 评论 -
Java设计模式16——策略模式
一、定义 策略(strategy)模式属于对象的行为模式。其用途是针对一组算法,将每个不同算法封装到具有共同接口的独立类中,从而使他们可以相互替换。即使 算法和对象分开来,使得算法可以独立于使用它的客户而变化。二、场景某个市场人员接到单后的报价策略。报价策略很复杂,可以简单作如下分类:普通客户小批量,不打折普通客户大 批量,打9折老 客户小批量,打8.5折老 客户大批量,打8折 我们通常原创 2016-11-14 08:30:27 · 5195 阅读 · 5 评论 -
Java设计模式17——模板方法模式
一、介绍模板方法模式是编程中经常用到的模式。它定义了一个操作中的算法骨架,将某些步骤延迟到子类中实现。这样,新的子类可以在不改变一个算法结构的前提下重新定义该算法的某些特定步骤。二、场景举例当一个客户到银行办理业务时,有以下流程:1.取号排队2.办理具体现金/转账/企业/理财业务3.给银行工作人员评分这时办理业务的一个标准流程,其中一三步是确定的,而第二步往往并不确定只有等到到窗口办理业务时原创 2016-11-15 18:20:22 · 2163 阅读 · 1 评论 -
Java设计模式20-备忘录模式
一、场景当我们使用文本编译器记录一些内容时,发现这一步写错了,往往可以使用Ctrl+Z的方式会退到上一个状态,其中运用到的知识就是备忘录模式。二、定义备忘录模式,即保存某个对象内部状态的拷贝,这样以后就可以将该对象恢复到原先的状态。三、模式结构发起者角色(Originator):负责创建一个备忘录用以记录当前时刻它的内部状态,并可以使用备忘录恢复内部状态。备忘录角色(Memento):负责存储O原创 2016-12-02 10:34:47 · 3291 阅读 · 3 评论 -
Java设计模式19——观察者模式
一、定义观察者模式定义了一个一对多的依赖关系,让多个观察者对象同时监听同一个主题对象。当这个主题状态发生改变时,会通知所有观察者对象,让它们自动更新自己。二、类似场景聊天室程序的创建。服务器创建好后,A、B、C三个客户端连接好公开聊天。A向服务器发送数据,服务器在将数据分别发送给其他在线客户。也就是说,每个客户端需要更新服务器端的数据。网站上,很多人订阅了“Java主题”的新闻。当有这个主题新闻原创 2016-11-20 18:37:00 · 2342 阅读 · 1 评论 -
Java设计模式学习04——原型模式
原型模式 当我们需要构建一个与已经存在对象相似时,再通过new去产生一个新对象需要非常繁琐的数据准备或访问权限,而这时就可以用到原型模式,原型模式实现就是Java中的克隆技术,以某个对象为原型,复制出新的对象,显然新的对象具备原型对象相同的特点。原型模式优点是,效率高,可以直接复制,避免了重新执行构造方法过程步骤。 原型模式中的复制类似于new,但不同于new。new创建新的对象属性采用的是原创 2016-10-26 10:38:21 · 1326 阅读 · 1 评论 -
Java设计模式学习05——适配器模式
之前讲的几种模式都是创建型模式,现在开始讲结构型模式。何为结构型模式?结构型模式的 核心作用, 是从程序结构上实现松耦合,从而可以扩大整体的类结构,用来解决更大的问题。一、适配器模式定义适配器模式,把一个类接口变化成客户端所期待的另一个类的接口,使原来因接口不匹配而无法一起工作的类能够一起工作。二、适配器模式举例1.生活中例子: 用电器做例子,一个电器的插头只有两相,而有些地方的电源插座却只有三相。原创 2016-10-27 18:55:24 · 1463 阅读 · 5 评论 -
Java设计模式13——迭代器模式
一、场景对于学习了Java的同学来说,“迭代”这个词并不会陌生,我们经常使用Iterator接口对Collection下的集合类进行遍历,常见代码:Iterator iterator=list.iterator();while(iterator.hasNext()){//进行遍历}这便是很好的迭代器模式应用例子。我们可以在不暴露集合类的内部结构情况下,通过迭代器让外部客户端透明的访问其内部的数原创 2016-11-09 19:15:34 · 932 阅读 · 0 评论 -
Java设计模式学习——前言与介绍
前言 在我平时的学习与项目工作中,经常会纠结于类的框架搭建,以及类间的关系梳理,而当我通过查看一些牛人的代码解释时总会有一种有一种豁然开朗之感,感觉别人写的代码层次清晰,易于理解。久而久之,我确实感觉到了设计模式在项目工作中的重要性,所以这段时间我会简单的学习Java中的设计模式,当然深刻的理解设计模式需要有足够的项目经验,目前我只希望大致了解各种设计模式功能,希望在以后的项目中能够使用并加深理解原创 2016-10-23 14:04:11 · 2779 阅读 · 1 评论 -
Java设计模式14——中介者(Mediator)模式
一、定义用一个中介对象封装一系列对象的交互,中介者是多个对象不需要显示的相互作用,而且可以独立的改变他们的交互。二、举例通过上述定义可能不好理解,下面举一个例子,假如在一个没有总经理的公司中,有三个部门:财务部、市场部、研发部。那么财务部负责发工资,需要和市场部及研发部都通气;市场部负责接新项目,需要研发部处理技术、需要财务部出资金;虽然只有三个部门,但关系非常乱,就像下图: 但是实际上,公司都有原创 2016-11-11 21:06:27 · 11685 阅读 · 4 评论 -
Java设计模式12——责任链模式
一、定义 将能够处理同一类请求的对象连成一条链,所提交的请求将沿着这条链传递,链上的对象逐个判断是否有能力处理该请求,如果有则处理,如果没有则将请求传递给下一个对象处理。二、场景举例1.生活中场景 在学校时,请假条的审批过程:如果请假小于3天,辅导员直接批准。如果请假大于等于3天小于10天,需院长审批。如果请假大于等于10天小于30天,校长审批。请假被拒绝2.开发中场景 Java原创 2016-11-07 20:07:33 · 1038 阅读 · 0 评论 -
Java设计模式11——享元模式
一、适用场景 内存属于稀缺资源,不能随意浪费。如果在一个系统中有很多个完全相同或相似的对象,我们就可以使用享元模式,让他们共享一份内存即可,不必每个都去实例化对象,从而节省内存空间。二、模式核心享元模式以共享的方式高效的支持大量细粒度对象的重用。享元对象能做到共享的关键是区分了内部状态和外部状态。 内部状态:可以共享,不会随环境改变而改变。外部状态:不可以共享,会随环境改变而改变。围棋例原创 2016-11-06 14:58:56 · 24541 阅读 · 5 评论 -
Java设计模式10——外观模式
外观模式是最简单的设计模式之一,所以我就不再去重写了,简单的总结转载看到的一篇文章,原文链接:http://blog.csdn.net/jason0539/article/details/22775311一、定义外观模式(也称为门面模式)定义了一个高层接口,为子系统中的一组接口提供了一个一致的界面,从而使得这一组子系统更加容易使用。 这个模式很好的遵循了迪米特法则(最少知识法则),即一个软件应当尽转载 2016-11-05 21:09:44 · 1311 阅读 · 0 评论 -
Java设计模式学习09——装饰模式
一、定义装饰(Decorate)模式又称为包装(Wrapper)模式。装饰模式是以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。二、职责动态的为一个对象增加新的功能。装饰模式是一种用于代替继承的技术,无须通过继承增加子类就能扩展对象的新功能。使用对象的关联关系代替继承关系,更加灵活,同时避免类型体系的快速膨胀。三、装饰模式结构装饰模式类图:Component抽象构件角色:真实对原创 2016-11-03 19:11:02 · 3979 阅读 · 5 评论 -
Java设计模式学习08——组合模式
一、组合模式适用场景把部分和整体的关系用树形结构来表示,从而使客户端可以使用统一的方式对部分对象和整体对象进行管理。二、组合模式结构抽象构件(Conponent)角色:所有类的共有接口,定义了叶子和容器的共同点。叶子(Leaf)构件角色:在组合中表示叶子结点对象,叶子节点无子节点。容器(Composite)构件角色:有容器特征,可以 用来存储子节点,在Component接口中实现与子节点有关操原创 2016-11-02 19:44:52 · 31730 阅读 · 3 评论 -
Java设计模式学习06——静态代理与动态代理
一、代理模式为某个对象提供一个代理,从而控制这个代理的访问。代理类和委托类具有共同的父类或父接口,这样在任何使用委托类对象的地方都可以使用代理类对象替代。代理类负责请求的预处理、过滤、将请求分配给委托类处理、以及委托类处理完请求的后续处理。二、代理模式结构UML类图:由上图代理模式的结构为:抽象角色: 真实对象和代理对象的共同接口。代理角色: 代理对象角色内部含有对真实对象的引用,从而可以操作真原创 2016-10-30 09:57:18 · 43026 阅读 · 3 评论 -
Java设计模式学习01——单例模式
Java单例模式是一种常见且较为简单的设计模式。单例模式,顾名思义一个类仅能有一个实例,并且向整个系统提供这一个实例。 单例模式的特点:单例类仅能有一个实例。单例类必须为自己创建实例。单例类必须向外界提供获取实例的方法。 以下是几种实现方法一、懒汉式单例(能够延时加载)public class SingleTon { private static Single原创 2017-04-15 10:31:32 · 2877 阅读 · 0 评论