设计模式
mindcarver
匠心
展开
-
设计模式之工厂模式
文章目录工厂模式一:简单工厂模式1. 问题的引出2. 简单工厂模式概述3. 简单工厂模式结构图4. 简单工厂模式角色5.简单工厂模式解决上述问题6:简单工厂模式总结二:工厂方法模式1.问题的引出2.工厂方法模式概述3.工厂方法模式结构图4.工厂方法模式角色5.工厂方法模式解决上述问题6.工厂方法模式总结三:抽象工厂模式1.问题的引出2.抽象工厂模式概述3.抽象工厂结构图4.抽象工厂模式实例5.抽象...原创 2018-12-14 22:07:17 · 158 阅读 · 0 评论 -
设计模式之建造者模式
建造者模式一:建造者概述我们大家可能都会开小汽车,但是当你得到一辆小汽车的时候,你可以用它驰骋马路,但是你知道它组件复杂的构造过程吗,并不知道。而我们今天要讲的建造者模式其实就是复杂的创建型模式,客户端无需知道复杂对象的内部组成和装配方式,只需要知道建造者的类型即可。它关注的是一步步的创建独立的复杂对象,不同的具体构造者定义不同的创建过程。其定义如下:建造者模式(Builder Patte...原创 2018-12-20 17:23:24 · 242 阅读 · 0 评论 -
设计模式之门面模式
门面模式一:门面模式概述在现实世界中,外墙都在我们身边。操作系统就是这样一个例子 - 您没有看到计算机的所有内部工作方式,但操作系统提供了使用机器的简化界面。简而言之,门面模式旨在使事物看起来更清洁,更容易操作。定义:为子系统中的一组接口提供统一接口。Façade定义了一个更高级别的接口,使子系统更易于使用。门面模式只是将客户端与子系统隔离,结构图如下:角色:**Facade...原创 2018-12-26 14:42:49 · 430 阅读 · 3 评论 -
设计模式之单例模式
单例模式1.单例模式概述基本定义单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例对于系统的某些类来说,只含有一个实例很重要,有助于我们协调系统的整体行为。比如线程池、缓存、日志对象等等都会被设计为单例,设计的初衷也是为了避免不一致状态。2.常见的单例模式饿汉式单例提供一个私有的默认构造函数避免类在外部被实例化,在同一个虚拟机范围内,Singleton的唯一实...原创 2018-12-15 21:16:29 · 174 阅读 · 0 评论 -
设计模式7大原则
文章目录面向对象设计原则概述1.单一职责原则单一职责定义单一职责举例分析2.开闭原则开闭原则简介开闭原则的优势案例3.里氏代换原则里氏替换原则简介里氏替换原则约束里氏替换原则实战4.依赖倒转原则依赖倒转原则简介依赖倒转原则实例5.接口隔离原则接口隔离原则简介实例演示6.合成复用原则合成复用原则简介7.迪米特法则迪米特法则简介8.总结面向对象设计原则概述对于面向对象软件系统的设计而言,在支持可...原创 2018-12-11 11:21:37 · 5404 阅读 · 1 评论 -
设计模式之代理模式
文章目录代理模式一:代理模式概述1.1 什么是代理1.2 代理的概念结构图1.3 代理可以做什么二:静态代理模式2.1 静态代理概念2.2 静态代理实战三:动态代理模式3.1 动态代理概念3.2 JDK动态代理和Cglib动态代理3.2.1 JDK动态代理3.2.2 JDK动态代理总结3.2.3 Cglib动态代理3.2.4 Cglib实例演示四:总结代理模式一:代理模式概述高中的时候遇到一...原创 2018-12-22 14:16:05 · 189 阅读 · 0 评论 -
java 深克隆(深拷贝)与浅克隆(浅拷贝)详解
java深克隆和浅克隆基本概念浅复制(浅克隆)被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。换言之,浅复制仅仅复制所拷贝的对象,而不复制它所引用的对象。深复制(深克隆)被复制对象的所有变量都含有与原来的对象相同的值,除去那些引用其他对象的变量。那些引用其他对象的变量将指向被复制过的新对象,而不再是原有的那些被引用的对象。换言之,...原创 2018-12-18 20:53:42 · 481 阅读 · 0 评论 -
设计模式之原型模式
原型模式一:原型模式概述为什么要用原型模式:在系统中有时候可能需要创建多个一模一样的对象,而有的对象创建过程十分复杂,或者创建对象很耗费资源亦或是创建对象十分频繁,那么这个时候就必须要解决这个问题,而原型模式则能很好的解决这个问题。基本定义:原型模式(Prototype Pattern):使用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。原型模式是一种对象创建型模式。...原创 2018-12-19 10:37:27 · 184 阅读 · 0 评论 -
设计模式之适配器模式
文章目录适配器模式一:适配器模式概述二:对象适配器结构图三:案例分析四:类适配器结构图五:适配器模式总结适配器模式一:适配器模式概述 适配器其实大家都知道,比如电源适配器,笔记本电压20多V,而家庭用电220V,所以我们必须解决让20v左右的笔记本在220V环境下工作,那么便需要电源适配器了。 与电源适配器相似,在适配器模式中引入了一个被称为适配器(Adapter)的包装类,而它所包装...原创 2018-12-25 16:10:46 · 158 阅读 · 0 评论 -
设计模式之委派模式
委派模式1:委派模式在23种设计模式里面是没有委派模式的,但是spring中大量存在,Spring MVC框架中的DispatcherServlet其实就用到了委派模式,我们可以将委派模式理解成静态模式以及策略模式的组合。2:一个简单的应用场景 分析如下:老板将任务委派给项目经理,项目经理将任务细化,根据每个人擅长的某一方面将细化后的任务分给指定的员工,权衡的方式(策略)有多种,...原创 2018-06-25 16:12:35 · 651 阅读 · 0 评论 -
设计模式之策略模式
策略模式1:策略模式的基本概念策略模式定义了一系列的算法,并将每一个算法封装起来,而且使他们可以相互替换,让算法独立于使用它的客户而独立变化。2:UML类图3:涉及的角色环境(Context)角色:持有一个Strategy(抽象策略)的引用。抽象策略(Strategy)角色:这是一个抽象角色,通常由一个接口或抽象类实现。此角色给出所有的具体策略类所需的接口。具体策略(...原创 2018-06-25 15:04:47 · 151 阅读 · 0 评论 -
设计模式之工厂模式
工厂模式1:简单工厂模式public interface Milk { //获取一个标准产品 public String getName();}public class SanLu implements Milk { @Override public String getName() { return "三路"; }}pu...原创 2018-06-25 14:07:13 · 172 阅读 · 0 评论 -
设计模式之命令模式
定义命令模式:将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。场景1)首先,让所有的命令对象实现相同的包含一个方法的接口,也就是所谓的命令接口。public interface Command { public void execute();}2)实现一个打开电灯的命令:根据厂商提供的类,Light类有两个方法:on和off//这是一个原创 2018-01-02 20:44:04 · 193 阅读 · 0 评论 -
设计模式之适配器模式
学习目标本节目标:以不同的目的,包装某些对象,让它们的接口看起来不像自己而像是别的东西,不仅如此,还要探讨另一个模式,将对象包装起来以简化其接口。适配器适配器大家都知道,比如电源适配器,可以改变插座形状来匹配插头。那面向对象的适配器又是什么呢:将一个接口转换成另一个接口,以符合客户的期望。 我们再愉快的用鸭子来举例说明://鸭子类public interface Duc原创 2018-01-04 14:25:48 · 206 阅读 · 0 评论 -
设计模式之观察者模式
文章思路都来自于HeadFirst观察者模式简介定义:观察者模式(又被称为发布-订阅(Publish/Subscribe)模式,属于行为型模式的一种,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态变化时,会通知所有的观察者对象,使他们能够自动更新自己设计场景设计一个系统 :显示目前的状况的布告板,当weatherObject 获得最原创 2017-12-30 16:08:09 · 338 阅读 · 0 评论 -
设计模式之装饰者模式
装饰者概述动态的将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。问题的抛出开始的类设计如下: 但是有的顾客需要添加调料,比如说豆浆,摩卡等等。还需要根据这些调料收取不同的费用,所以订单系统开始尝试变化,第一个尝试如下: 看看这个设计有多么的糟糕,没中不同的饮料加调料的组合都需要生成一个新类,不敢想象会有多少个类存在,况且一旦某个调料价格变动,原创 2017-12-31 13:00:35 · 271 阅读 · 0 评论 -
责任链模式拦截器实现
package gxx.proxy;import java.lang.reflect.Method;public class ResponsebilityChain { public static void main(String[] args) { Helloword proxy1=(Helloword)InterceptorJdkProxy.bind(new H...原创 2018-04-02 14:59:55 · 391 阅读 · 0 评论 -
设计模式之原型模式
原型模式1:模式定义根据原对象实例复制新的实例。2:实现方式浅拷贝:使用一个已知实例对新创建实例的成员变量逐个赋值(可以理解为两个对象实例地址不一样,但是字段的地址一样。打个比方10个猴子拿着的是同一根金箍棒) //直接实现一个cloneable接口就完成了浅拷贝public class Monkey implements Cloneable { public...原创 2018-06-24 20:45:22 · 171 阅读 · 0 评论 -
设计模式之代理模式
代理模式1:代理模式简介可以把代理简单的理解为中介,为目标对象提供代理对象,由代理对象去控制目标对象的引用。因此可以通过代理对象来扩展目标对象功能而无需更改目标对象。2:代理模式的主要角色ISubject:抽象主题角色,目标对象和代理对象共同实现的接口。TargetSubject:目标主题角色,是实现抽象主题接口的类。Proxy:代理角色,也是实现抽象主题接口的类,内部含...原创 2018-06-25 11:14:54 · 142 阅读 · 0 评论 -
设计模式之装饰者模式
文章目录装饰模式一:装饰模式概述二:装饰模式结构图三:装饰模式实战四:装饰模式注意事项四:装饰模式总结五:适用场景装饰模式一:装饰模式概述装饰模式可以在不改变一个对象本身功能的基础上给对象增加额外的新行为,比如把房子装修就是一个很典型的场景。装饰模式是一种用于替代继承的技术,它通过一种无须定义子类的方式来给对象动态增加职责,使用对象之间的关联关系取代类之间的继承关系。在装饰模式中引入了装饰...原创 2018-12-25 21:49:17 · 198 阅读 · 0 评论