设计模式
java 设计模式
qq345oo
踏踏实实做自己
展开
-
Converter模式 及其在Spring中的应用
文章目录前言一、Converter关系图二、代码Converter抽象类Converter子类具体使用优点三、Spring中是如何使用Converter模式的spring 中的Converter类具体的实现类spring Converter的其他扩展总结前言在开发中,类型转换是我们天天都要做的事情.如何优雅的进行类型转换,而不是在逻辑代码中到处充斥着setter方法或者强制转换? 请使用Converter模式提示:以下是本篇文章正文内容,下面案例可供参考一、Converter关系图二、代码原创 2021-04-21 16:39:55 · 2485 阅读 · 0 评论 -
装饰器模式
装饰模式(decorator):表示动态的给一个对象添加一些新的功能(利用子类继承父类也可以实现,但是比生成子类方式更灵活)。也叫装饰者模式或者装饰器模式/** * ICar表示Component: */public interface ICar { void move();//汽车移动}//ConcreteComponent:具体的对象class Car implements ICar{ @Override public void move() { .原创 2021-04-19 16:35:12 · 75 阅读 · 0 评论 -
适配器模式
适配器模式主要目标是将已有的类(不方便改动的),通过适配器模式,适应新的接口.public interface ChinaSheep { void sound();}class RedSheep implements ChinaSheep { @Override public void sound() { System.out.println("我是中国红色的羊"); }}class WhiteSheep impleme原创 2021-04-19 09:32:44 · 100 阅读 · 0 评论 -
简单工厂 工厂方法 抽象工厂 如何理解
文章目录前言一、简单工厂二、工厂方法三、抽象工厂总结前言简单工厂,工厂方法,抽象工厂,三者有什么区别? 搞清楚他们有什么弊端,以发展的角度去观察,理解会更加深入。提示:以下是本篇文章正文内容,下面案例可供参考一、简单工厂简单工厂说白了就是包装了if else的一段代码,对象我不想自己创建了,工厂你根据我给你的产品名,给我一个对象就好了,具体细节我不关心.class FruitFactory{ public Fruit getFruit(String fruitName){原创 2021-04-17 08:17:12 · 119 阅读 · 0 评论 -
Object-Pool 对象池
Object-Pool 对象池对于一个实例化比较困难的对象, 我们可以使用原型模式克隆一个对象, 这种方法是在创建的角度节约资源另外一种节约资源的方法就是使用Object-Pool对象池模式, 它能将有限多个对象缓存起来,达到资源重复使用的目的,像我们常用的数据库连接池,其实就是保存了连接对象的 对象池.public class SqlConnection { private Integer connectionId; public SqlConnection() {原创 2021-04-16 09:04:23 · 184 阅读 · 0 评论 -
原型模式
原型模式关于深拷贝和浅拷贝java 8种基本数据类型及其包装类型, 以及String 类型都是深拷贝,其他数据类型为浅拷贝关于重写Object 的clone接口一般来说太麻烦,普通类还好,如果有引用类型的成员,成员也需要实现Clone接口,最好使用序列化的方式进行深拷贝还有一个值得注意的地方Clone方法是protected修饰符修饰的, 包及子类可调用,所以说 无法直接调用String,clone();使用序列化的方式(使用ByteArray反序列化)public class原创 2021-04-16 09:04:13 · 65 阅读 · 0 评论 -
MonoState 单一状态模式
MonoState 单一状态模式MonoState模式与Singleton都是保证单一性的模式。但是它和Singleton有意图上的明显差别。Singleton的默认构造函数为private的,限制客户端直接new对象,并使用static的方式来保证类的对象单一; 而MonoState模式是构造函数声明为public,而将类中所有的字段声明为static。MonoState并不限制创建对象的个数,但是它的状态却只有一个状态.public class SqlRequest { private原创 2021-04-16 09:04:00 · 401 阅读 · 0 评论 -
step-builder 建造者模式
step-builder 建造者模式step-builder 建造者模式是链式建造者模式的近一步扩展, 能够按步骤实例化对象.还是以建造一个Compute为例,代码如下↓↓↓public class Computer { private String cpu; private String ram; private String screen; public String getCpu() { return cpu; } publ原创 2021-04-16 09:03:49 · 453 阅读 · 0 评论 -
传统建造者模式
传统建造者模式传统建造者模式 由四种角色组成 1.产品类 2.建造者抽象类 3.建造者类 4.Director指挥者角色.Builder知道怎么建造一个对象, Director可以自由发挥,指挥builder完成不同部件的建造.链式建造者模式,是传统建造者模式的简化.public class Computer { private String cpu; private String ram; public String getCpu() { return原创 2021-04-16 09:03:37 · 123 阅读 · 0 评论 -
链式建造者模式
链式建造者模式在实际工作中非常常用,对于复杂对象的构建很有帮助。public class Computer { private final String cpu; private final String ram; private final String display; private Computer(Builder builder) { this.cpu = builder.cpu; this.ram = builder.ram.原创 2021-04-16 09:03:23 · 130 阅读 · 0 评论 -
多例模式 multiton
多例模式 multiton在单例模式中,每一个类我们只能获取它的一个实例. 而在多例中,我们可以获取该类的有限个实例,是创建型的设计模式,public enum FruitType { APPLE, BANANA;}public class Fruit { private String name; private Fruit(String name) { this.name = name; } private static Concurr原创 2021-04-16 09:02:48 · 113 阅读 · 0 评论 -
Facade 门面模式(外观模式)
Facade 门面模式(外观模式)外观模式(Facade),他隐藏了子系统的复杂性,并向客户端提供了一个可以访问系统的接口。这种类型的设计模式属于结构性模式。为子系统中的一组接口提供了一个统一的访问接口,这个接口使得子系统更容易被访问或者使用。假设现在有三个系统,如果没使用外观模式,代码如下↓↓↓public static void main(String[] args) { System1 system1 = new System1(); System1 sys原创 2021-04-16 09:02:25 · 101 阅读 · 0 评论 -
单例的最佳实现 枚举
首先看下枚举实现的单例类普通的类public class Controller { public Controller() { } public void func(){ System.out.println("1"); }}我想把它变成单例的(用一个枚举类持有想要实现单例的普通类)public enum ControllerHolder { INSTANCE; private Controller controller; .原创 2021-04-05 13:41:04 · 181 阅读 · 0 评论 -
单例模式 为啥越写越复杂
单例模式饿汉模式public class Hungry { private Hungry() {} public static Hungry instance = new Hungry(); public static Hungry getInstance() { return instance; }}之所以叫做饿汉模式,是因为比较饿,上来就new 一个对象,不管用没用到,也就没有了延迟加载的优点 线程安全,调用效率比较高优化下饿汉模式,原创 2021-04-05 13:39:28 · 149 阅读 · 1 评论 -
使用抽象文档模式 为对象动态添加属性
抽象文档模式 abstract-document为什么叫抽象文档模式?在文件系统中,我们一个文件夹内可以有多个文件,也可以有多个文件夹,子文件夹内又可以有文件和文件夹,是树形的结构. 抽象文档模式就是对这种情况的一种抽象,可以动态的给对象添加属性来支持这种数据结构.能干什么?我们通常编程的过程都是先声明一个对象,对象内包含事先定义好的属性,类似于以下的这种情况↓↓↓public class Head { private String head;}public class原创 2021-04-05 13:37:43 · 304 阅读 · 0 评论