设计模式
设计模式
响彻天堂丶
那万一赢了呢?
展开
-
设计模式 – 观察者模式
概念1、观察者(Observer)模式的定义:指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。这种模式有时又称作发布-订阅模式、模型-视图模式,它是对象行为型模式。2、观察者模式是一种对象行为型模式,其主要优点如下。1)降低了目标与观察者之间的耦合关系,两者之间是抽象耦合关系。2) 目标与观察者之间建立了一套触发机制。3、它的主要缺点如下。1)目标与观察者之间的依赖关系并没有完全解除,而且有可能出现循环引用。2)当观察者对象很多时,通知的原创 2020-10-25 21:13:01 · 1815 阅读 · 3 评论 -
设计模式 – 装饰者模式
概念(1) 装饰(Decorator)模式的定义:指在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式,它属于对象结构型模式。(2) 装饰(Decorator)模式的主要优点有:采用装饰模式扩展对象的功能比采用继承方式更加灵活。可以设计出多个不同的具体装饰类,创造出多个不同行为的组合。(3) 其主要缺点是:装饰模式增加了许多子类,如果过度使用会使程序变得很复杂。(4) 和继承的区别通常情况下,扩展一个类的功能会使用继承方式来实现。但继承具有静态特征,耦合度高,原创 2020-10-25 21:06:08 · 1750 阅读 · 1 评论 -
设计模式 – 适配器模式
1 介绍适配器模式(Adapter Pattern)将某个类的接口转换成客户端期望的另一个接口表示,主要目的是兼容性,将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作目的:让原本接口不兼容的类可以兼容2 拓展登录uml图:2.1 账号/密码登录public class SignService { /** * 账号密码登录 */ public String login(String username, Str原创 2020-10-23 00:33:10 · 1708 阅读 · 1 评论 -
设计模式 – 模板设计模式
模板设计模式模板方法模式(Template Method Pattern),又叫模板模式(Template Pattern),在一个抽象类公开定义了执行它的方法的模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。该模式的主要优点如下。1) 它封装了不变部分,扩展可变部分。它把认为是不变部分的算法封装到父类中实现,而把可变部分算法由子类继承实现,便于子类继续扩展。2) 它在父类中提取了公共的部分代码,便于代码复用。3) 部分方法是由子类实现的,因此子类可以通过扩展方式增加相应的原创 2020-10-22 23:36:00 · 1990 阅读 · 4 评论 -
设计模式实战,工厂+策略+单例 解决 if else 过多问题
场景在支付选择中,可以选择京东白条、支付宝、微信、银联支付等。 public void payment(String payType) { if (payType.equals("JD")) { //京东支付 } else if (payType.equals("Alibaba")) { //支付宝支付 } else i原创 2020-10-21 23:44:54 · 1865 阅读 · 0 评论 -
设计模式 – 策略模式
策略模式策略模式(Strategy Pattern)是指定义了算法家族、分别封装起来,让它们之间可以互相替换,此模式让算法的变化不会影响到使用算法的用户。使用场景1、假如系统中有很多类,而他们的区别仅仅在于他们的行为不同。2、一个系统需要动态地在几种算法中选择一种。案例购物时有优惠活动,优惠策略会有很多种可能如:领取优惠券抵扣、返现促销、拼团优惠。下面我们用代码来模拟:public interface PromotionStrategy { void doPromotion();原创 2020-10-21 21:39:27 · 1701 阅读 · 1 评论 -
设计模式 – 委派模式
委派模式委派模式不属于 GOF23 种设计模式中。委派模式(Delegate Pattern)的基本作用就是负责任务的调用和分配任务,跟代理模式很像,可以看做是一种特殊情况下的静态代理的全权代理,但是代理模式注重过程,而委派模式注重结果。委派模式在 Spring 中应用非常多,大家常用的 DispatcherServlet 其实就是用到了委派模式。例:老板(Boss)给项目经理(Leader)下达任务,项目经理会根据实际情况给每个员工派发工作任务,待员工把工作任务完成之后,再由项目经理汇报工作进度和结原创 2020-10-21 20:41:26 · 1701 阅读 · 2 评论 -
设计模式 – 代理模式
1 概述在生活中,我们经常见到这样的场景,如:租房中介、售票黄牛、婚介、经纪人、快递、事务代理、非侵入式日志监听等,这些都是代理模式的实际体现。代理模式(ProxyPattern)的定义也非常简单,是指为其他对象提供一种代理,以控制对这个对象的访问。代理对象在客服端和目标对象之间起到中介作用,代理模式属于结构型设计模式。使用代理模式主要有两个目的:一保护目标对象,二增强目标对象。下面我们来看一下代理模式的类结构图:Subject 是顶层接口,RealSubject 是真实对象(被代理对象),Pro原创 2020-10-21 15:43:34 · 1809 阅读 · 1 评论 -
设计模式 –单例模式
1 概念所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法(静态方法)。实现方法:(1) 构造器私有化 。(2) 类的内部创建对象。(3) 向外暴露一个静态的公共方法。2 饿汉式优点:这种写法比较简单,就是在类装载的时候就完成实例化。避免了线程同步问题。缺点:在类装载的时候就完成实例化,没有达到Lazy Loading的效果。如果从始至终从未使用过这个实例,则会造成内存的浪费public class Hung原创 2020-10-20 22:23:11 · 1680 阅读 · 0 评论 -
设计模式 – 工厂模式
1 简单工厂模式简单工厂模式是属于创建型模式,是工厂模式的一种。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式。优点:客户端不需要再负责对象的创建,仅仅调用工厂,工厂帮你创建需要的对象。并且把对象的创建和使用进行解耦,方便管理。缺点:违反了开闭原则。demo:水果工厂制作水果public abstract class Fruit { public abstract String getName();}public clas原创 2020-10-20 16:17:30 · 1846 阅读 · 2 评论