Java8——设计模式

(上课讲的几个设计模式,期末考试复习用。。。)

零、基本原则

  1. 找出可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起。
  2. 针对接口编程,针对超类型(泛型)编程
  3. 多用组合,少用继承
  4. 类应该对修改关闭,对扩展开放,允许系统在不修改代码的情况下,进行功能扩展

一、单例模式

  1. 背景:很多时候都需要保证一个类仅有一个实例
    例如:操作系统只需要一个时钟
  2. 实现:
public class Singleton{
	private Singleton(){
		...
	}
	public static Singleton getSingletonInstance(){
		return new Singleton();
	}
}

解析一下:
①构造方法私有,意味着不会在其他类中误调用创建一个新的Singleton对象
②getSingletonInstance()方法静态公开,意味着想获取Singleton,只有调用这个方法这条途径,因为是static,第一次调用之后,每次返回的也就是第一次创建的这个。
最后,无论多少个地方用到这个类,访问的都是唯一生成的那个实例

  1. 优点:单一实例,修改方便(可以随时换成只有2实例,只有3实例)
    使用情境:希望整个程序只有一个实例连接到数据库
    一个类的属性唯一且希望不能修改(就比如无数恒星对象,但是光速属性只有一个)
    一个类没有属性

二、策略模式

如果一个程序有多种情况,那么普通思路是不断if-else,每个if-else分支下面写一堆代码,翻来翻去想找某一行要很久,想加上一种情况也会很混乱。
因此,可以把if-else每个分支下面的一堆代码换成调用一个类中的方法。
Q&A:
这个类怎么来的?新建呗。
如果又要加一种情况怎么办?再新建一个类呗。
这么多类不好管理啊?每个if-else有其相似点,抽象成一个接口不就得了。

三、简单工厂模式

就比如富士康造手机,如果单独写,那还是主函数里一大堆if-else。相当于亲手造手机,自己要事无巨细地干所有活。而工厂模式就是把造手机封装在“工厂类”里面,想要哪个和工厂类说一声就能拿到了(仅仅只是按现实类比了一下,事实上工厂类里面的代码还是要自己写的)
*拓展的话,就是把工厂作为一个抽象类,然后可以想象每一种手机都单独放到某个工厂中,这样就防止工厂类也变得太大,还可以便于扩展。
(设计模式似乎有个永恒的主题就是提高封装性,加强可扩展性)

四、观察者模式

定义了主题对象和观察者对象,一旦主题对象有什么变动,马上“通知”观察者对象,然后观察者对象就根据这个自动更新
实现方法,就是一个Observer接口,几个观察者类,有一个更新函数,需要观察的地方调用一下这个更新函数就可以

五、适配器模式

两个原本不兼容的接口之间加上一个适配器,相互之间就可以转换了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值