常用设计模式总结_西工大软件学院_面向对象课程

1.单例模式Singleton
私有构造函数、私有静态变量、公有静态函数(用于获取对象实例)
a.最基本的:线程不安全
public class Single{
private static Single single;
private Singke(){
}
public static Single getSingle(){
if(single == null)
{
single = new Single();
}
return single;
}
}
b.推荐使用:串行化(synchronized)+双重校验是否初始化

public class Singleton {

private volatile static Singleton uniqueInstance;

private Singleton() {
}

public static Singleton getUniqueInstance() {
if (uniqueInstance == null) {
	synchronized (Singleton.class) {
		if (uniqueInstance == null) {
			uniqueInstance = new Singleton();
		}	
	}
}
return uniqueInstance;
}
}

PS:syn的三种应用方式
普通同步方法(实例方法),锁是当前实例对象 ,进入同步代码前要获得当前实例的锁

静态同步方法,锁是当前类的class对象 ,进入同步代码前要获得当前类对象的锁

同步方法块,锁是括号里面的对象,对给定对象加锁,进入同步代码库前要获得给定对象的锁。

第二个if不能省略,不然可能会被实例化多次
c.内部静态类实现:该方式由JVM保证线程安全性
1.内部静态类在没有被调用之前不会载入内存
2.静态类只能由JVM初始化一次
在这里插入图片描述
2.简单工厂模式
用户生命一个接口,然后调用工厂类决定接口的实例化
Product声明为接口
3.工厂模式
在简单工厂中,创建对象的是另一个类,而在工厂方法中,是由子类来创建对象。

public abstract class Factory {
abstract public Product factoryMethod();
public void doSomething() {
Product product = factoryMethod();
// do something with the product
}
}

需要生命一个产生Product的抽象方法,通过抽象类实现多态

4.策略模式Strategy
策略模式可以让***算法***独立于使用它的客户端。
在这里插入图片描述
5.观察者模式Observer
观察者模式定义了主题对象和观察者对象之间的一对多依赖,当主题对象的状态发生变化时,它的所有依赖者对象都会收到通知并自动更新。
在这里插入图片描述
实际:一对多关联关系,但需要定义接口然后实现,以实现无需关注observer细节。
5.适配器模式adapter
在这里插入图片描述
Client: 客户,有请求
Adaptee :被适配者,所有的请求都委托给被适配者完成
Target: 目标抽象类,定义客户要用的请求接口
Adapter: 适配器,调用被适配者的接口,实现目标中 用户请求的接口
使用情况:1、使用第三方组件,而这个组件的接口与目前系统接口不兼容(如方法与系统方法不一致等),可以使用适配器模式解决接口不兼容问题。2、使用早前项目一些有用的类,可以用适配器模式解决现有接口与原有对象接口不兼容问题。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值