OOAD之设计模式-创建模式

这篇博客主要介绍了设计模式中的创建型模式,包括单例模式、工厂模式、建造者模式和原型模式。单例模式确保类只有一个实例,常用于全局配置;工厂模式则通过工厂方法创建对象,分为简单工厂、工厂方法和抽象工厂;建造者模式将复杂对象的构建与表示分离;原型模式则是通过复制已有对象创建新对象。
摘要由CSDN通过智能技术生成

先来说说模式的概念吧。

模式就是:具有代表性的某些重复问题的解决方案,是进过多次证实,与业务无关的方案。

它们都有特定的名称和适用的环境。模式的使用为我们带来了复用性的提高和可维护性的提高,同时可以增强表达能力。因为它是整个解决方案的总结。

一、模式的主要分类

模式分为两大类:设计模式和架构模式。

根据group of four 定义的23种模式和MVC模式,总共有24种。

其中设计模式又分为三小类:设计模式是系统局部出现的某一核心问题的解决方案

1.1创建型模式

创建模式:是用于创建对象。

包括单列、工厂、建造者、原型四种模式。

1.2结构型模式

结构模式:是用于组织类和对象之间关系的,形象的说就是对象间的组织形式。

包括桥梁、装饰器、适配器、外观、代理模式等。

1.3行为型模式

行为模式:是用于对象交换和职责分配的,形象的说就是方法的组织形式。

包括方法模板、策略、观察者、命令模式等。

另外架构模式是用于指导整个系统的整体的组织结构,规划,指南,用来组织预定义的职责分明的子系统。

二、创建模式

2.1单列模式singleton

顾名思义:这种设计模式是为了保证整个类只会产生一个对象,它是唯一的存在,通常用于独一无二的最高控制者。

在应用系统开发时,经常需要让系统管理一些软件内外部资源,这些内外部资源中有些只能有一个实例。

共有3种方法实现,各有不同的效果:

2.1.1预加载

构造方法私有,有一个静态属性是本身的一个对象。加载类时直接赋值构造一个对象。有静态方法可以获取该对象的引用。

 

//单例(态)模式一
//优点:线程绝对安全,多线程情况下不排队
//缺点:预加载导致不使用也产生了对象
//public class Singleton {
//	
//	//静态的对象,保证了全类共享一个对象
//	private static Singleton instance;
//	
//	static{
//		instance = new Singleton();
//	}
//	
//	//私有的构造方法
//	private Singleton(){
//		
//	}
//	
//	public static Singleton getInstance(){
//		return instance;
//	}
//	
//}


2.1.2延时加载

构造方法私有,有一个静态属性是本身的一个对象。用一个静态同步方法来赋值,第一次调用给静态属性赋值,之后直接提取值。

//单例模式二
//优点:延迟加载(当真正需要对象的时候才产生)
//缺点: 多线程情况下要排队
//public class Singleton{
//	private static Singleton instance = null;
//	
//	private Singleton(){
//		
//	}
//	
//	public synchronized static Singleton getInstance(){
//		if(instance == null){
//			instance = new Singleton();
//		}
//		return instance;
//	}
//}
2.1.3高并发延时加载

构造方法私有,有一个静态属性是本身的一个对象。有一个静态方法给它赋值,代码块中使用双锁机制来控制。

//单例模式三(Java不支持)
//别名:双锁机制
//实现延迟加载、并支持高并发!
public class Singleton{
	
	private static Singleton instance = null;
	
	private Singleton(){
		
	}
	
	public static Singleton getInstance(){
		if(instance == null){
			
			synchronized(Singleton.class){
				if(instance == null){
					instance = new Singleton();
				}
			}
		}
		re
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值