无论是工作,还是面试,大家都大谈设计模式,貌似会设计模式就是很厉害的角色了,个人一直认为,设计模式只是一些实践得到的宝贵经验,是解决一些特定场景问题的解决方案。
单例,用的很多。
保证唯一实例,避免重复运算。
从HibernateUtil得到SessionFactory,为Dao源源不断生成Session实例,到初始化一些耗时重要的操作,保存结果信息。这里的SessionFactory及结果信息就是要保存的,在系统运行时只允许计算或执行一次的操作,后续都是用这个实例,避免资源浪费。单例有饿汉(直接new 对象了)与懒汉式(需要时再创建)的。
程序上作的手脚有
1.私有化构造方法,不允许通过new的方式创建实例,从而达到控制实例的数量。
2.同步方法或者代码块,以避免代码多次执行;
3.static,使外部程序可通过类名直接访问方法取得这一单例。
《研磨设计模式》中指出了另一种方式,即通过内部类的方式创建:
因:内部类相当于类的成员,用static修饰后会仅且只在第一次时被初始化。这时就保证了唯一的实例,且JVM已经自己可以保证同步,不再需要synchronized控制了。
public class InnerClassSingleton { /** * @author zc * @Time 2011-8-7 */ private static class SingletonHolder { private static InnerClassSingleton instance = new InnerClassSingleton(); } private InnerClassSingleton() { } public static InnerClassSingleton getInstance() { return SingletonHolder.instance; } }
适配器
这也是一个常用的模式,Slf4j+slf4j-log4j+log4j,大致它 slf4j-log4j*.jar包中的几个类就是Adapter中的角色。适配器,说白了,就是之前的代码接口等放到现在已经不能符合要求,但是又不想完全抛弃它(毕竟它还是可以完成很多工作的),这时就需要用另一个类来封装它,封装后用新的接口(接口中包含新的方法)统一向外提供服务。slf4j , c3p0 , jboss的日志大致都是这么干的。
适配置器就是封装旧方法,扩展新功能
public class Adapter implements Target { //Target 为新的接口,自定义 private Old old ;//原来的类 public Adapter(Old old){ this.old = old; } public void method() { old.oldMethod();//执行原来类的方法 System.out.println(Adapter.class+" in "+Adapter.class.getResource("")); } //………若干新方法 }
外观模式
Facade,英文的音不要读错了.
方便外部系统调用,打包方法(封装内部)。
当一个模块成熟后或者一个向外提供服务的功能完成后,用一个方法作为入口,外部系统或者其它子系统通过这个方法来调用后面N个子方法。这个便是外观模式解决的问题。最多即是用来对外发布接口服务。
public class Facade { /** * 提供统一方法 * @throws Exception */ public static void test() throws Exception{ FApiA fa = new FAImpl(); //调用第一个操作 fa.generate(); FApiB fb = new FApiBImpl(); //调用 第二个操作 fb.generate(); } }
相关推荐
设计模式分为三大类:创建型模式(如单例、工厂方法、抽象工厂)、结构型模式(如代理、装饰器、适配器)和行为型模式(如观察者、策略、命令)。这些模式都是在特定上下文中解决设计问题的模板,它们可以提高代码的...
在iOS开发中,单例是一种常见的设计模式,用于在整个应用程序中确保只有一个实例存在,并提供一个全局访问点。在这个“ios-(单例)简单的夜间模式Demo”中,开发者创建了一个单例类来实现夜间模式的功能,这非常适合...
在软件开发领域,设计模式是一种被广泛接受的解决常见问题的最佳实践。对于C++开发者而言,结合QT4开源跨平台开发框架,可以极大地提升代码的可重用性、可维护性和扩展性。QT4框架提供了丰富的类库和工具,使得在...
在软件设计模式的世界里,命令模式、观察者模式、装饰模式、适配器模式、责任链模式、外观模式、中介者模式、抽象工厂模式以及单件模式和访问者模式是常见的设计模式,它们都有各自独特的应用场景和优势。...
Java设计模式是面向对象编程中的重要概念,它们是解决常见问题的经验总结,为软件开发提供了可复用的解决方案。在给定的压缩包文件中,包含了多种设计模式的代码实例,我们将逐一探讨这些模式及其应用。 1. **策略...
C++设计模式原理与实战视频课 1-1 课程介绍 1-2 导论UML和设计模式导论 2-1 简单工厂方法的定义场景与实现-针对接口编程的设计思想剖析 2-2 简单工厂实用工程技术:C++对象动态创建技术与配置化开发 2-3 单例模式的...
设计模式是软件工程中的一种最佳实践,它是在特定上下文中解决常见问题的模板,可以被重复使用,以提高代码的可读性、可维护性和可扩展性。在面向对象编程中,设计模式尤其重要,它们代表了在软件设计中经过时间验证...
设计模式是软件工程中的一种重要概念,它是在特定情境下,为解决常见问题而形成的一套成熟的、可重用的设计方案。设计模式并不是具体的代码或库,而是对在软件设计中反复出现的问题及其解决方案的一种描述,是经验和...
Java设计模式是软件开发中的重要概念,它是一种在特定情境下解决问题的经验总结,可以提高代码的可重用性、灵活性和可维护性。这23种设计模式是根据《设计模式:可复用面向对象软件的基础》一书分类的,包括创建型、...
### Java23种设计模式(总结) #### 一、引言 设计模式是软件工程领域的一个重要概念,它提供了一套解决常见问题的方案。在Java编程语言中,设计模式被广泛应用于各种软件项目的开发中,以提高代码的可复用性、灵活...
在IT行业中,设计模式是一种被广泛认可的解决软件设计中常见问题的方法论,它提供了一套通用的解决方案模板,能够帮助开发者在面对复杂系统时,更有效地组织代码,提高代码的可读性、可维护性和复用性。设计模式不是...
设计模式是软件开发中的一种重要概念,用于解决常见的设计问题并提供可重用的解决方案。在本文中,我们将深入探讨结构型模式以及设计模式的基本原则。 结构型模式是设计模式的一种类别,它关注如何组合类和对象以...
### 设计模式精解——GoF 23种设计模式解析及C++实现源码 #### 引言 本文档旨在简化并深入解读由Erich Gamma等四位作者所著的经典著作《设计模式:可复用面向对象软件的基础》(简称GoF设计模式),通过简化概念并...
在编程领域,设计模式是一种通用、可重用的解决方案,用于解决常见的软件设计问题。C#作为.NET框架下的主要编程语言,同样可以充分利用设计模式来提高代码的可维护性、可扩展性和可读性。本资源是关于"C#设计模式"的...
Java设计模式是软件开发中的一种最佳实践,它们是经过时间考验、被广泛接受的解决方案,用于解决在编写可维护和可扩展的Java应用程序时经常遇到的问题。这些模式提供了可复用的结构,使得代码更加清晰,更易于理解和...
3.1.1设计模式 3.1.2创建型模式概述 3.1.3简单工厂模式 3.1.4工厂方法模式 3.1.5抽象工厂模式 3.1.6建造者模式 3.1.7原型模式 3.1.8单例模式 3.2实训实例 3.2.1简单工厂模式实例之图形工厂 3.2.2工厂方法...
这篇博客“用设计模式解决多数据源问题”探讨了如何利用设计模式来优雅地解决这类挑战。 首先,我们需要理解什么是设计模式。设计模式是软件设计中经过验证的、通用的解决方案模板,它描述了在特定上下文中反复出现...
Java面试题涵盖了大量的核心概念和最佳实践,其中设计模式是一个重要的部分。设计模式是软件工程中的一种标准解决方案,用于常见的设计问题。它们是基于经验总结的、被广泛接受的、可重复使用的代码设计模式,目的是...
设计模式是软件工程中的一种重要概念,它是在特定情境下,为解决常见问题而形成的一套最佳实践。设计模式并不直接实现为代码,而是提供了一种描述在某些特定上下文中,如何解决常见问题的模板。这些模式是经过多年...