设计模式
yangsen159
这个作者很懒,什么都没留下…
展开
-
生成器模式(9)
生成器模式(Builder Pattern)Separate the construction of a complex object from its representation so that the same construction process can create different representations.将一个复杂对象的构建与它的表示分离,使同样的构建过程可以创建不...原创 2018-12-21 15:33:26 · 459 阅读 · 0 评论 -
桥接模式(10)
一、认识桥接模式1、概念将抽象部分与它实现部分分离,使它们都可以独立地变化。2、例子说明从上面的例子我们可以看到,我们的手机可以从两个维度进行变化,一个是品牌,一个是内存。此时我们就可以通过桥接模式将这两个维度分离开来,每一个维度都可以独立扩展。比如说手机品牌,可以又出现了苹果、三星、锤子等等。内存方面又可以生产10G、16G的了。从专业的角度来看可以这样定义桥接模式:“桥接模式是一种很...原创 2019-11-28 11:37:45 · 100 阅读 · 0 评论 -
适配器模式(8)
适配器模式适配器模式(Adapter Pattern):将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。适配器模式既可以作为类结构型模式,也可以作为对象结构型模式。在适配器模式中,我们通过增加一个新的适配器类来解决接口不兼容的问题,使得原本没有任何关系的类可以协同工作。根据适配器类与适配者类的关系不同,适配器模式可分为对象适配器和类适...原创 2019-11-21 10:28:17 · 76 阅读 · 0 评论 -
观察者模式(7)
案例引入一个很常见的案例。现在有一家气象站负责发布气象消息(WeatherData),作为不同的客户,会有不同的对于气象消息的需求,我们也就需要设计一个或者多个面向用户的消息面板获取气象总站的消息,并更新给用户满意的定制数据,用来获取报酬。Internet气象站项目:提供温度、气压和湿度的接口测量数据更新时需时时通知给第三方需要设计开放型API,便于其他第三方公司也能接入气象站获取数据...原创 2019-11-20 18:12:09 · 104 阅读 · 0 评论 -
责任链模式(6)
责任链模式一个事件需要经过多个对象处理是一个挺常见的场景,譬如采购审批流程,请假流程,软件开发中的异常处理流程,web请求处理流程等各种各样的流程,可以考虑使用责任链模式来实现。以请假流程为例,一般公司普通员工的请假流程简化如下:普通员工发起一个请假申请,当请假天数小于3天时只需要得到主管批准即可;当请假天数大于3天时,主管批准后还需要提交给经理审批,经理审批通过,若请假天数大于7天还需要...原创 2019-11-20 15:07:09 · 135 阅读 · 0 评论 -
装饰者模式(5)
定义动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。装饰者对象和被装饰的对象都实现了相同的操作接口,装饰者将被装饰者包装起来,在同名的接口方法中,在调用被装饰者的方法之前或者之后做一些自己的操作,这样在外部调用者来看,就相当于被“装饰”了一样。咖啡的例子首先咖啡是一种饮料,然后咖啡还可以加调料如加糖加牛奶等等。饮料是抽象的构件基类,咖啡作为具体的构件实现类,调...原创 2019-11-20 11:44:41 · 123 阅读 · 0 评论 -
策略模式在JDK中的应用(4-1)
策略模式在JDK中的应用:在多线程编程中,我们经常使用线程池来管理线程,以减缓线程频繁的创建和销毁带来的资源的浪费,在创建线程池的时候,经常使用一个工厂类来创建线程池Executors,实际上Executors的内部使用的是类ThreadPoolExecutor.它有一个最终的构造函数如下:public ThreadPoolExecutor(int corePoolSize, ...原创 2019-11-19 16:51:10 · 403 阅读 · 0 评论 -
策略模式(4)
在讲策略模式之前,我们先看一个日常生活中的小例子:现实生活中我们到商场买东西的时候,卖场往往根据不同的客户制定不同的报价策略,比如针对新客户不打折扣,针对老客户打9折,针对VIP客户打8折…现在我们要做一个报价管理的模块,简要点就是要针对不同的客户,提供不同的折扣报价。如果是有你来做,你会怎么做?我们很有可能写出下面的代码:public class QuoteManager { ...原创 2019-11-19 14:42:37 · 185 阅读 · 0 评论 -
模板模式(3)
一、什么是模版方法模式模板模式 :解决某类事情的步骤有些是固定的,有些是会发生变化的,那么这时候我们可以为这类事情提供一个模板代码,从而提高效率。通过定义一个算法骨架,而将算法中的步骤延迟到子类,这样子类就可以复写这些步骤的实现来实现特定的算法。是类的一种行为,只需要准备一个抽象类,将逻辑用具体方法和构造函数的形式来表现,后声明一些抽象方法来迫使子类必须实现其逻辑,不同的子类可以实现不同的方...原创 2019-11-19 11:34:59 · 133 阅读 · 0 评论 -
工厂模式(2)
工厂模式的关键点是面向接口编程工厂方法模式定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。一、简单工厂模式:实例化对象的时候不再使用 new Object()形式,可以根据用户的选择条件来实例化相关的类。对于客户端来说,去除了具体的类的依赖。只需要给出具体实例的描述给工厂,工厂就会自动返回具体的实例对象。具体实现:接口public i...原创 2019-11-18 15:21:34 · 71 阅读 · 0 评论 -
单例模式(1)
单例模式所谓单例,就是整个程序有且仅有一个实例。该类负责创建自己的对象,同时确保只有一个对象被创建单例模式的意义有些对象我们只需要一个:线程池、缓存、硬件设备等如果多个实例会有造成冲突、结果的不一致性等问题单例模式:确保一个类最多只有一个实例,并提供一个全局访问点特点:类构造器私有持有自己类型的属性对外提供获取实例的静态方法懒汉式public class Singleto...原创 2019-11-18 11:59:34 · 96 阅读 · 0 评论 -
Spring与策略模式(4-2)
Spring与策略模式一:策略模式的定义策略模式是对算法的包装,把使用算法的责任和算法本身分隔开,委派给不同的对象管理。策略模式通常把一系列的算法包装到一系列的策略类里面,作为一个抽象策略类的子类。模式不是代码,而是某类问题的通用设计解决方案分析项目变化与不变部分,提取变化部分,抽象成接口+实现添加新功能–>父类添加新行为–>所有子类都会继承这个方法JAVA...原创 2019-06-20 11:44:29 · 217 阅读 · 0 评论 -
策略模式+工厂模式妙用
策略模式+工厂模式优化if…else if…else if结构首先,按照if…else if语句来实现打折商品的例子,代码如下:public class Example { public Double calRecharge(Double charge ,RechargeTypeEnum type ){ if(type.equals(RechargeTypeEnum....原创 2018-12-20 17:10:08 · 235 阅读 · 0 评论 -
责任链模式(6-1)
责任连模式定义:使多个对象都有机会处理请求,从而避免了请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。类型:行为类模式首先来看一段代码:public void test(int i, Request request){ if(i==1){ Handler1.response(request); }...原创 2018-12-20 14:28:37 · 140 阅读 · 0 评论 -
JavaScript设计模式--模板方法模式
JavaScript设计模式–模板方法模式一、定义模板方法是基于继承的设计模式,可以很好的提高系统的扩展性。 java中的抽象父类、子类模板方法有两部分结构组成,第一部分是抽象父类,第二部分是具体的实现子类。二、示例Coffee or Tea(1) 把水煮沸(2) 用沸水浸泡茶叶(3) 把茶水倒进杯子(4) 加柠檬/* 抽象父类:饮料 */var Beverage = fun...原创 2018-12-19 11:30:04 · 124 阅读 · 0 评论