设计模式
我会努力变强的
这个作者很懒,什么都没留下…
展开
-
设计模式之模板方法模式
概述模板模式通常又叫模板方法模式(Template Method Pattern)是指定义一个算法的骨架,并允许子类为一个或者多个步骤提供实现。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法的某些步骤,属于行为性设计模式。适用于:1、一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现。2、各子类中公共的行为被提取出来并集中到一个公共的父类中,从而避免代码重复。我们以炒菜为例子:洗锅–>点火–>热锅–>上油–>下原料–>翻炒–>放调料–&g原创 2020-12-15 16:11:53 · 138 阅读 · 1 评论 -
设计模式之策略模式
概述假如系统中有很多类,而他们的区别仅仅在于他们的行为不同。一个系统需要动态地在几种算法中选择一种。角色:策略接口,对应策略的接口。各种策略实现类。客户端。业务场景比如优惠活动,有3种优惠,优惠券、返现、团购三种优惠,如果没有使用策略模式,就应该是这样的。@Datapublic class Order { private String orderId; //优惠类型 private String discountKey; private Bi原创 2020-12-15 11:23:25 · 246 阅读 · 2 评论 -
动态代理模式以及jdk动态代理原理
概述静态代理有一定的局限性,就是需要指定代理对象的类型,并且还要指定代理的方法,比如如果我要把某些类的所有成员方法都代理增强,增加日志功能,就要在这些的代理类中每个方法都写相应的逻辑代码。十分地麻烦,如果使用动态代理,可以有效解决该问题,spring的AOP底层使用的就是动态代理。动态代理常用的有jdk的动态代理和cglib的动态代理,两者的区别是jdk动态代理是代理接口的,而cglib动态代理代理的是类。jdk动态代理jdk动态代理有几个重要角色:被代理对象接口:因为jdk动态代理代理的是接口,原创 2020-12-14 16:54:42 · 136 阅读 · 0 评论 -
代理模式之静态代理
概述在生活中,我们经常见到这样的场景,如:租房中介、售票黄牛、婚介、经纪人、快递、事务代理、非侵入式日志监听等,这些都是代理模式的实际体现。代理模式(ProxyPattern)的定义也非常简单,是指为其他对象提供一种代理,以控制对这个对象的访问。代理对象在客服端和目标对象之间起到中介作用,代理模式属于结构型设计模式。使用代理模式主要有两个目的:一保护目标对象(使得客户端不用直接操作目标读写,解耦),二增强目标对象(不修改原对象的代码情况下)。上图是代理模式的类图:Subject是被代理的顶层接口原创 2020-12-11 17:24:28 · 111 阅读 · 0 评论 -
设计模式之工厂方法模式与抽象工厂模式
工厂方法模式由于简单工厂模式的不足,工厂方法可以比较有效弥补。工厂方法模式是指定义一个创建对象的接口,但是让实现这个接口的类来决定实例化哪个类。工厂方法让类的实例化推迟到子类中进行。工厂方法模式中用户只需要关心什么样的工厂实现会创建出什么样的对象,无需关心创建细节。工厂方法模式主要解决产品扩展的问题,在简单工厂中,随着产品链的丰富,如果每个课程的创建逻辑有区别的话,工厂的职责会变得越来越多,有点像万能工厂,并不便于维护。违反单一原则和开闭原则。例子:还是以pizza为例子,有ChinesePizz原创 2020-12-11 15:31:03 · 133 阅读 · 0 评论 -
设计模式之建造者模式
介绍:建造者模式又叫生成器模式,是一种对象构建模式,他可以将复杂对象的构建过程从该对象中提出来,将对象属性行为和对象的构建分离开来,使这个抽象过程的不同实现方法可以构建出不同状态的对象。建造者模式是一步步构建对象,他允许用户通过指定复杂对象的类型和内容就能进行构建,用户无需知道细节。使产品和建造产品的过程解耦。建造者的4个角色:Product:产品,即要构建的对象。BaseBui...原创 2019-12-06 18:19:22 · 88 阅读 · 0 评论 -
设计模式之简单工厂模式
定义:简单工厂模式属于创建型模式,是工厂模式的一种,简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例,简单工厂模式是工厂模式家族最简单实用的模式。定义了一个创建对象的类,由这个类封装实例化对象的行为。在软件开发中,当我们会用到大量的创建某种、某类、或者某批对象时,就会使用到工厂模式。场景:一个关于pizza的项目。4. pizza的种类很多,GreekPizza、Cheese...原创 2019-12-05 17:45:15 · 107 阅读 · 0 评论 -
设计模式之单例模式介绍
定义:单例模式保证在整个软件系统内存中只存在一个类的实例,并且该类只有一个方法可以获取实例。属于创建型设计模式。注意:必须将该类的构造方法私有化。单例模式的七种写法:饿汉式(静态常量):/** * 使用静态常量的饿汉式单例模式demo */public class EagerSingletonDemo1 { private static final EagerSinglet...原创 2019-12-04 19:06:18 · 95 阅读 · 0 评论 -
软件设计七大原则
设计原则:在软件设计中应该遵循的原则,这样比较容易设计出易扩展、易维护、可重用、灵活性高的软件架构。设计原则是设计模式的基础,每个设计模式或多或少都会遵循一个以上的设计原则。单一职责原则:对一个类或者方法来说,只负责一项职责,如果一个类负责多个职责的话,某个职责的修改可能会导致令一个职责错误,所以要将职责分离开来。可以在类级别或者方法级别上遵守单一职责原则。单一职责的优点和细节:可以降...原创 2019-12-04 16:29:02 · 504 阅读 · 0 评论