![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
seasonsbin
这个作者很懒,什么都没留下…
展开
-
设计模式-建造者模式
定义:将复杂对象的构建过程与它的表示分离,使得同样的构建过程可以创建出不同的表示。建造者模式属于创建型模式适用场景1.多个部件或零件,都可以装配到一个对象中,但是产生的结果又不相同。2.产品类非常复杂,或者产品类中的调用顺序同步产生不同的作用3.当初始哈一个对象特批复杂,参数多,而且很多参数都有默认值时。类图这是一种在Builder里面直接new对象的方式,MyBatis的SqlSessionFactoryBuilder就是这种写法,适用于属性之间关联不多且大量属性都有默认值原创 2021-07-05 23:11:37 · 133 阅读 · 1 评论 -
设计模式-策略模式
策略模式,又叫政策模式,他是将定义的算法家族,分别封装起来,让它们之间可以互相替换,从而让算法的变化不会影响到使用算法的用户。可以避免多重分支的 if...else...和switch语句。策略模式属于行为型设计模式。策略模式也可以理解为是一种单一的we生活中的应用场景:阶梯个税,手机支付方式选择。应用场景1.假如系统中有很多类,而他们的区别仅仅在于它们的行为不同。2.需要动态的在几种算法中选择一种。3.需要屏蔽算法规则。类图:...原创 2021-07-05 22:55:36 · 134 阅读 · 0 评论 -
设计模式-委派模式
定义:委派模式又叫委托模式,它的主要职责是负责任务的调度和分配,将任务的执行和分配分离开来,可以看做是一种特殊情况下静态代理的全权代理。委派模式不属于GOF23中的设计模式,委派模式是行为型设计模式。委派模式的应用场景:1.委派对象本身不知道如何处理一个任务,或一个请求,把请求交给其他对象处理。2.实现程序的解耦。类图:java中的classloader 的双亲委派机制。java反射中的method.invoke()方法。spring中的BeanDefinitionParse原创 2021-07-05 17:28:17 · 158 阅读 · 0 评论 -
设计模式-桥接模式
定义:也成为桥梁模式、接口模式或柄体模式,是将抽象不服与它的具体实现部分分离,使它们都可以独立地变化。通过组合的方式建立两个类之间的联系,而不是继承。桥接模式属于结构型设计模式。桥接模式是继承或者多重继承的一种替代方法,因为多重继承违背了类的单一职责。桥梁模式的适用场景1.在抽象和具体之间需要增加更多的灵活场景。2.一个类存在两个或多个独立变化的维度,而这两个或多个维度都需要独立进行扩展。3.不希望适用继承,或因为多层继承导致系统类的个数剧增。桥接模式在生活中的场景:连接两个原创 2021-07-04 15:32:24 · 69 阅读 · 0 评论 -
设计模式-适配器模式
定义:适配器模式又叫做变压器模式,它的功能是将一个类的接口变成客户端期望的另一种接口,从而使原本因接口不匹配而导致无法一起工作的两个类能够一起工作。适配器模式属于结构型设计模式。生活中的适配器模式:两脚转三角插头,手机充电接口,显示器转接头适用场景1.已经存在的类,他的方法和需求不匹配(方法结果相同活相似)的情况2.适配器模式不是软件设计阶段考虑的设计模式,是随着软件维护由于不同产品、不同厂家造成功 能类似而接口不相同情况下的解决方案。适配器可细分为三种,分别是类适配器,接口适配器.原创 2021-07-04 14:34:57 · 76 阅读 · 0 评论 -
设计模式-代理模式
代理模式是一个非常常见的模式。定义:代理模式使指为其他对象提供一种代理,以控制这个对象的访问。代理对象在客户端和目标对象之间起中介作用。代理模式属于结构性设计模式。生活中的代理:房产中介,快递小哥,黄牛党。静态代理有两种形式,静态代理和动态代理静态代理:显示声明被代理对象。静态代理类图:JDK代理:利用字节码重组技术生成一个的新的类,该类继承自Proxy,并且会实现被代理对象的实现的所有接口的接口方法,并提供InvocationHandlerCGLIB代理:Spr原创 2021-07-04 16:52:27 · 98 阅读 · 1 评论 -
设计模式-装饰器模式
定义:装饰器模式也叫包装模式,是指在不改变原来对象的基础上,将功能附加到对象上,提供了比继承更有弹性的替代方案(扩展原有对象的功能)。装饰器模式属于结构型设计模式特点:透明的,动态的扩展原有对象的功能。生活中的装饰器模式:煎饼,水果蛋糕。适用场景:1.用于扩展一个类的功能或者给类添加一个附加职责。2.动态的给对象添加功能,这些功能可以再动态的撤销。类图:应用举例:jdk中的IO流,spring中的transaction.mybatis的cache.装饰器模式和代理模式原创 2021-07-04 09:39:45 · 96 阅读 · 0 评论 -
设计模式-单例模式
定义:确保一个类在任何情况下都绝对只有一个实例,并提供一个全局访问点。构造器私有化,阻止外部程序对其实例化。创建型设计模式适用场景:确保任何情况下都绝对只有一个实例。如ServletContext,ServletConfig,ApplicationContext,DBTool等。单例模式的常见写法:饿汉式单例 特点:类加载的时候就立即初始化, 优点:执行效率高,性能高, 缺点:在某些情况下可能会造成内存浪费。懒汉式单例 ...原创 2021-07-03 21:33:25 · 52 阅读 · 0 评论 -
设计模式-工厂模式
工厂历史的由来:原始社会自给自足->农耕社会小作坊(简单工厂)->工厂流水线生产->现代产业链代工厂简单工厂模式定义::是指有一个工厂对象决定创建出哪一种产品类的实例。创建过程封装到工厂内部,调用者无需关注。简单工厂不属于GOF23中的设计模式,属于创建型的设计模式。优点:减少代码的冗余,即创建对象的逻辑集中到对象工厂中统一维护,避免创建对象的动作存在于程序的各个角落,从而避免散弹式的bug。也可以减少业务对象的职责,使业务对象更加专注于业务本身。缺点:职责较重,每原创 2021-07-03 19:46:16 · 74 阅读 · 0 评论 -
设计模式-设计原则
1.开闭原则 (Open-Closed Principle)定义:一个软件实体如类,模块,函数应对扩展开放,对修改关闭。用抽象构建框架,用实现扩展细节。开闭原则最核心的思想就是面向抽象编程。优点:提高软件系统的可复用性,可维护性和可测试性。2.依赖倒置原则定义:高层模块不应该依赖低层模块,二者都应该依赖其抽象,抽象不应该依赖细节,细节应该依赖抽象。针对接口编程,不要针对实现编程。优点:可以减少类之间的耦合性、提高系统的稳定性,提高代码的可读性和可维护性,可以降低修改程序所造成的风险。.原创 2021-07-03 14:28:15 · 79 阅读 · 0 评论