1.singleton(单例模式,有些地方称为单身模式):保证一个类只有一个实例对象,并提供访问这个实例的全局访问点。
当然实例可以在静态代码块、属性、方法、构造函数中进行初始化,建议使用静态代码块的方式创建实例。
1.1通过静态代码块创建
1.2 通过属性创建唯一实例
1.3 通过方法创建
1.4通过构造函数创建
1.5 1.3改进,线程同步
ps:这4种方式的单例模式中1.1最好,1.1利用静态代码块只初始化一次的特性实现,通过getInstance()获得实例不需要判断实例是否存在即可获得唯一实例对象,相对于另外几种来说效率上也会更好;1.2通过属性创建唯一实例,这种方法的特点是在属性中用final修饰静态属性来保证实例只初始化一次,有些地方也称这种模式为醉汉式singleton;1.3的这种实例也成为懒汉式singleton,这种情况存在线程安全问题,在多线程的环境下初始化实例可能会存在这种情况:当2个线程都执行到singleton=new Singleton_Method();这时实例并未创建,虽然最终可以获得同一个实例对象,但是这样就使得实例创建过2次,最近一次覆盖了以前的实例。可以采用synchronized进行线程同步,如1.5,线程同步后的代价会使得效率比1.3更差;1.4和1.3差不多,但是1.4需要通过new对象后再调用方法来获得唯一实例(newSingleton_Con().getInstance();),而且不安全。
singleton被不同的classload装载的时候还是无法获得同一个实例对象的。
2.simple_factory
提供一个创建对象的方法,根据传入类型决定实例化哪个对象
Fruit.java Fruit_Interface
Apple.java Apple implements Fruit
Banana.java Banana implements Fruit
FruitFactory.java
Test.java
ps:这个模式存在问题:当增加一种水果的时候,就要修改水果工厂(FruitFactory.java)中生产水果的方法(加上对应的创建水果实例代码)
3.factory_method
定义一个用于创建对象的接口,让子类决定把哪一个类进行实例化。
Fruit.java//水口接口
Apple.java//Apple implements Fruit
Banana.java//Banana implements Fruit
FruitFactory.java//水果工厂接口
create apple and banana's FruitFactory
AppleFactory.java//AppleFactory implements FruitFactory,example:AppleFactory
Test.java
ps:factory_mathod存在的问题:假设如果有1000种"水果",那么就需要1000个"水果工厂"
分享到:
相关推荐
Java23种基本的设计模式整料整理学习源码示例zip Java23种基本的设计模式整料整理学习源码示例zip Java23种基本的设计模式整料整理学习源码示例zip Java23种基本的设计模式整料整理学习源码示例zip 设计模式的六大...
这些设计模式是软件工程中的基石,学习和理解它们有助于提升代码质量,降低维护成本,提高团队协作效率。吕震宇的《设计模式速成经典示例》通过具体的C#代码示例,深入浅出地讲解了这些模式的使用场景和实现方式,...
这份"根据《JAVA与设计模式》整理的笔记及示例代码"涵盖了Java语言和设计模式的核心概念,旨在帮助开发者理解和应用这些模式。 一、设计模式的基本概念 设计模式是对在特定情境下软件设计问题的解决方案的一种描述...
在Java开发中,设计模式是解决常见编程问题的模板,它们是经验丰富的开发者们在长期实践中总结出...在压缩包中的"designpattern"文件夹中,你将找到每种设计模式的Java实现示例,这将有助于你深入理解并掌握这些模式。
这个压缩包“Java设计模式”包含了对Java编程中23种经典设计模式的详细梳理和示例代码,这对于理解和应用这些模式至关重要。 1. **单例模式**:保证一个类只有一个实例,并提供全局访问点。在Java中,通常通过双重...
这份C++设计模式的个人整理涵盖了这些模式的概念、实现以及在实际项目中的应用示例。通过学习和理解这些模式,开发者能够更好地设计和重构代码,提高软件的可读性、可维护性和可扩展性。在C++编程中熟练运用设计模式...
考虑到笔记被整理为一个压缩包文件,我们可以推断作者在阅读过程中做了深入的记录,可能包括了对每种设计模式的详细解析、代码示例、个人感想和可能的改进建议。这些笔记不仅有助于巩固学习成果,而且对于那些寻求...
在这个整理的资料中,包含了23种经典的设计模式,每种模式都有详细的解释和代码示例。 1. **创建型模式**:创建型模式主要关注对象的创建过程,使得创建过程更加灵活,易于管理和控制。包括: - 单例模式:确保一...
本人在eclipse下自学设计模式过程中整理的资料,一个eclipse的工程下面分包写了java设计模式的示例代码,每个包是一个设计模式的代码。webcontent文件夹下放有两本java设计模式的电子书(doc和pdf)。
这本书总结了23种设计模式,广泛应用于C++和Java等面向对象语言中,对于C#开发者来说也同样具有重要的参考价值。 CSDN是一个知名的编程社区,李建忠老师是该平台的一位资深讲师,他以深入浅出的方式讲解了这些设计...
在曾探所著的《JavaScript设计模式与开发实践》一书中,作者详细介绍了JavaScript中的各种设计模式,并结合实战案例深入讲解了每种模式的应用场景和优缺点。 首先,设计模式大致可以分为三大类:创建型模式、结构型...
在本笔记源码中,你将深入理解23种经典设计模式,每一种都有详细的注释和示例。 1. **单例模式**:保证一个类只有一个实例,并提供全局访问点。在多线程环境下,单例模式的实现需要特别注意线程安全。 2. **工厂...
设计模式是软件工程中的一种最佳实践,它是在特定上下文中解决常见问题的模板,为软件设计提供了一种可复用的解决方案。设计模式不是代码,而是一种描述在某些特定情况下,如何设计和实现软件组件的经典方法。它们是...
本项目针对Java语言的开发者,整理和实现了11种经典的设计模式,并通过具体的源码示例,帮助开发者深入理解和掌握这些模式的使用场景和实现方式。 项目内容涵盖了多种文件类型,包括但不限于Java源代码文件、XML...
《尚学堂高琪GOF23设计模式代码与资料详解》 设计模式是软件开发中的重要概念,它代表了在特定...通过学习和实践这23种设计模式,开发者可以提升代码质量,增强软件的可维护性和可扩展性,从而在项目开发中游刃有余。
这个压缩包“设计模式 资料整理.rar”显然包含了关于设计模式的详细资料,可能包括文档、案例分析和示例代码,旨在帮助学习者理解和应用这些模式。 1. **单例模式(Singleton)**:确保一个类只有一个实例,并提供...
在这个"7.1前的java代码示例整理"中,我们可以期待找到多种设计模式的实现,以及枚举类和异常处理的实例。 首先,让我们深入了解一下设计模式。设计模式可以分为三类:创建型模式(如单例、工厂方法、抽象工厂、...
设计模式是一种在软件设计中被广泛认可的解决特定问题的模板,它代表了最佳实践,是经验丰富的软件开发人员在面对相似设计问题时的一种标准解决方案。这篇博客文章“设计模式(介绍+代码+部分类图)”可能是对设计模式...
我搜集整理的设计模式学习卡片。卡片信息包括每个设计模式的说明,应用场景,UML类图,部分模式包括示例代码,网络优秀文章对该模式的解读。 该卡片打开方式为Anki,非常推荐的一个学习工具,可以以科学的方式学习新...
编码实现阶段则要求用熟悉的编程语言实现每一种设计模式,并进行示例代码的编写和整理。项目实战阶段则是在实际项目中主动选择合适的设计模式,分析设计模式在框架中的运用,并在编写代码过程中探索设计模式的适用...