`
ponlya
  • 浏览: 164787 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

设计模式-单例-适配-外观

 
阅读更多

无论是工作,还是面试,大家都大谈设计模式,貌似会设计模式就是很厉害的角色了,个人一直认为,设计模式只是一些实践得到的宝贵经验,是解决一些特定场景问题的解决方案。

单例,用的很多。

保证唯一实例,避免重复运算。

从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();
	}
	
}

 

 

 

 

分享到:
评论

相关推荐

    C++设计模式-基于QT4开源跨平台开发框架 源码

    设计模式分为三大类:创建型模式(如单例、工厂方法、抽象工厂)、结构型模式(如代理、装饰器、适配器)和行为型模式(如观察者、策略、命令)。这些模式都是在特定上下文中解决设计问题的模板,它们可以提高代码的...

    ios-(单例)简单的夜间模式Demo.zip

    在iOS开发中,单例是一种常见的设计模式,用于在整个应用程序中确保只有一个实例存在,并提供一个全局访问点。在这个“ios-(单例)简单的夜间模式Demo”中,开发者创建了一个单例类来实现夜间模式的功能,这非常适合...

    C++ 设计模式-基于QT4开源跨平台开发框架src

    在软件开发领域,设计模式是一种被广泛接受的解决常见问题的最佳实践。对于C++开发者而言,结合QT4开源跨平台开发框架,可以极大地提升代码的可重用性、可维护性和扩展性。QT4框架提供了丰富的类库和工具,使得在...

    java设计模式-期末整理.docx

    在软件设计模式的世界里,命令模式、观察者模式、装饰模式、适配器模式、责任链模式、外观模式、中介者模式、抽象工厂模式以及单件模式和访问者模式是常见的设计模式,它们都有各自独特的应用场景和优势。...

    java设计模式代码实例

    Java设计模式是面向对象编程中的重要概念,它们是解决常见问题的经验总结,为软件开发提供了可复用的解决方案。在给定的压缩包文件中,包含了多种设计模式的代码实例,我们将逐一探讨这些模式及其应用。 1. **策略...

    C++设计模式原理与实战视频课

    C++设计模式原理与实战视频课 1-1 课程介绍 1-2 导论UML和设计模式导论 2-1 简单工厂方法的定义场景与实现-针对接口编程的设计思想剖析 2-2 简单工厂实用工程技术:C++对象动态创建技术与配置化开发 2-3 单例模式的...

    模式举例代码——设计模式和举例代码

    设计模式是软件工程中的一种最佳实践,它是在特定上下文中解决常见问题的模板,可以被重复使用,以提高代码的可读性、可维护性和可扩展性。在面向对象编程中,设计模式尤其重要,它们代表了在软件设计中经过时间验证...

    软件开发中关于设计模式的概念,分类,及应用实例

    设计模式是软件工程中的一种重要概念,它是在特定情境下,为解决常见问题而形成的一套成熟的、可重用的设计方案。设计模式并不是具体的代码或库,而是对在软件设计中反复出现的问题及其解决方案的一种描述,是经验和...

    Java23种设计模式讲义PDF版本打包.zip

    Java设计模式是软件开发中的重要概念,它是一种在特定情境下解决问题的经验总结,可以提高代码的可重用性、灵活性和可维护性。这23种设计模式是根据《设计模式:可复用面向对象软件的基础》一书分类的,包括创建型、...

    Java23种设计模式(总结)

    ### Java23种设计模式(总结) #### 一、引言 设计模式是软件工程领域的一个重要概念,它提供了一套解决常见问题的方案。在Java编程语言中,设计模式被广泛应用于各种软件项目的开发中,以提高代码的可复用性、灵活...

    [博客专栏][设计模式]部分源码

    在IT行业中,设计模式是一种被广泛认可的解决软件设计中常见问题的方法论,它提供了一套通用的解决方案模板,能够帮助开发者在面对复杂系统时,更有效地组织代码,提高代码的可读性、可维护性和复用性。设计模式不是...

    设计模式2-结构型模式&设计模式基本原则

    设计模式是软件开发中的一种重要概念,用于解决常见的设计问题并提供可重用的解决方案。在本文中,我们将深入探讨结构型模式以及设计模式的基本原则。 结构型模式是设计模式的一种类别,它关注如何组合类和对象以...

    设计模式精解(GoF_23种设计解析附C__实现源码)

    ### 设计模式精解——GoF 23种设计模式解析及C++实现源码 #### 引言 本文档旨在简化并深入解读由Erich Gamma等四位作者所著的经典著作《设计模式:可复用面向对象软件的基础》(简称GoF设计模式),通过简化概念并...

    C#设计模式

    在编程领域,设计模式是一种通用、可重用的解决方案,用于解决常见的软件设计问题。C#作为.NET框架下的主要编程语言,同样可以充分利用设计模式来提高代码的可维护性、可扩展性和可读性。本资源是关于"C#设计模式"的...

    JAVA设计模式

    Java设计模式是软件开发中的一种最佳实践,它们是经过时间考验、被广泛接受的解决方案,用于解决在编写可维护和可扩展的Java应用程序时经常遇到的问题。这些模式提供了可复用的结构,使得代码更加清晰,更易于理解和...

    《设计模式实训教程》【PPT+类图与代码+样章】

    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面试题和答案66道.docx

    Java面试题涵盖了大量的核心概念和最佳实践,其中设计模式是一个重要的部分。设计模式是软件工程中的一种标准解决方案,用于常见的设计问题。它们是基于经验总结的、被广泛接受的、可重复使用的代码设计模式,目的是...

    设计模式

    设计模式是软件工程中的一种重要概念,它是在特定情境下,为解决常见问题而形成的一套最佳实践。设计模式并不直接实现为代码,而是提供了一种描述在某些特定上下文中,如何解决常见问题的模板。这些模式是经过多年...

Global site tag (gtag.js) - Google Analytics