
设计模式
设计模式
splendor.s
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
设计模式--策略模式(注解)
策略模式 策略模式可以代替if-else,策略模式实现的方式也大同小异。主要是定义统一行为(接口或抽象类),并实现不同策略下的处理逻辑(对应实现类)。客户端使用时自己选择相应的处理类,利用工厂或其他方式(前面文章有分享到)。 注解实现 本文要说的是用注解实现策略模式的方式,以及一些注意点。 例如:以最常 见的订单处理为例。首先定义这样一个订单实体类: @Data public class Order { /** * 订单来源 */ private String原创 2020-07-21 10:26:05 · 1050 阅读 · 0 评论 -
设计模式之--模版方法
在面向对象系统的分析与设计过程中经常会遇到这样一种情况:对于某一个业务逻辑(算法实现)在不同的对象中有不同的细节实现,但是逻辑(算法)的框架(或通用的应用算法)是相同的。Template Method提供了这种情况的一个实现框架。 Template Method模式是采用继承的方式实现这一点:将逻辑(算法)框架放在抽象基类中,并定义好细节的接口,子类中实现细节。 Strategy模式解决的是和Template Method模式类似的问题,但是Strategy模式是将逻辑(算法)封装到一个类中,...原创 2021-01-16 16:05:01 · 216 阅读 · 1 评论 -
单例模式--十种实现方式的优缺点分析
基本的实现思路 单例模式要求类能够有返回对象一个引用(永远是同一个)和一个获得该实例的方法(必须是静态方法,通常使用getInstance这个名称)。 单例的实现主要是通过以下两个步骤: 将该类的构造方法定义为私有方法,这样其他处的代码就无法通过调用该类的构造方法来实例化该类的对象,只有通过该类提供的静态方法来得到该类的唯一实例; 在该类内提供一个静态方法,当我们调用这个方法时,如果类持有的引用不为空就返回这个引用,如果类保持的引用为空就创建该类的实例并将实例的引用赋予该类保持的引用。 1、饿汉式(原创 2020-07-16 17:43:43 · 716 阅读 · 0 评论 -
设计模式--建造者模式
模式的定义与特点 建造者(Builder)模式的定义:指将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式。它是将一个复杂的对象分解为多个简单的对象,然后一步一步构建而成。它将变与不变相分离,即产品的组成部分是不变的,但每一部分是可以灵活选择的。 该模式的主要优点如下: 1.各个具体的建造者相互独立,有利于系统的扩展...原创 2019-10-30 20:24:57 · 362 阅读 · 1 评论 -
设计模式--策略模式
在软件开发中也常常遇到类似的情况,当实现某一个功能存在多种算法或者策略,我们可以根据环境或者条件的不同选择不同的算法或者策略来完成该功能,如数据排序策略有冒泡排序、选择排序、插入排序、二叉树排序等。 如果使用多重条件转移语句(例如万恶的if--else)实现(即硬编码),不但使条件语句变得很复杂,而且增加、删除或更换算法要修改原代码,不易维护,违背开闭原则。如果采用策略模式就能很好解...原创 2019-10-23 16:38:51 · 678 阅读 · 2 评论 -
设计模式--装饰模式
★ 场景和问题 在不对原有对象类进行修改的基础上,如何给一个或多个已有的类对象提供增强额外的功能? ★ 引例 写一个MyBufferedReader类,使它能够对字符流(如FileReader、InputStreamReader和PipedReader等)进行功能增强: (1) 提供带缓冲的myRead()方法,对原有的read()方法进行增速; (2)提供一个能够每次读取一行字原创 2017-08-13 18:00:15 · 452 阅读 · 1 评论 -
设计模式--工厂模式
★ 场景和问题 Java程序开发讲究面向接口编程,隐藏具体的实现类,可是如何得到接口呢? 工厂的本质是“选择实现”. 工厂、接口和实现类之间的技术边界:工厂只负责选择实现,实现类才做真正的实现,而接口是限定到底实现什么东西和返回什么东西,三者之间分工明确、各负其责。 附代码如下: package SingelModel.pattern.factory.dep; public int原创 2017-08-12 14:58:12 · 343 阅读 · 1 评论 -
设计模式--值对象
★ 场景和问题 在Java开发时,需要来回交换大量的数据,比如要为方法传入参数,也要获取方法的返回值,该如何能更好的进行数据的交互? ★ 基本的编写步骤 ◎第1步:写一个类,实现可序列化(如果以后数据是往数据库里存的,那么可以不序列化,节省资源) ◎第2步:私有化所有属性,保持一个默认构造方法(public无参) ◎第3步:为每个属性提供get()、set()方法(如果是bool原创 2017-08-12 15:41:09 · 465 阅读 · 1 评论 -
设计模式--单例变形(多例)
★ 缓存在单例中的使用 缓存在编程中使用很频繁,有着非常重要的作用,它能够帮助程序实现以空间换取时间,通常被设计成整个应用程序所共享的一个空间,现要求实现一个用缓存存放单例对象的类。 说明:该缓存中可以存放多个该类对象,每个对象以一个key值标识,key值相同时所访问的是同一个单例对象。 public class A { private int value; public int原创 2017-08-12 14:44:01 · 585 阅读 · 1 评论