设计模式要点

设计模式六大原则:

1、单一职责原则,实现类要职责单一;

2、里氏替换原则,不要破坏继承体系;

3、依赖倒置原则,要面向接口编程;

4、接口隔离原则,在设计接口的时候要精简单一;

5、迪米特原则,最少知识法则,要降低耦合;对任何对象:

 5.1 只调用以下范围的方法:
 5.2 该对象本身,被当做方法的参数传递进来的对象,
 5.3 此方法创建或实例化的任何对象,
 5.4 对象的任何组件

6、开闭原则,要对扩展开放,对修改关闭。

1. 依赖倒置原则:要依赖抽象,不要依赖具体类
变量不可以持有具体类的引用。
不要让类派生自具体类
不要覆盖基类中已实现的方法
底层组件和高层依赖同样的抽象

2. 面向对象原则: 多用组合,少用继承
针对接口编程,不针对实现编程
为交互对象之间的松耦合设计而努力
类应该对扩展开放,对修改关闭
依赖抽象,不要依赖具体类

好莱坞原则:别调用高层组件,高层调用底层,别找我,我会找你

1.策略模式
定义算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于算法的客户

2.抽象工厂模式
抽象工厂模式----提供一个借口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。
工厂方法模式----定义了一个创建对象的接口,但由子类决定是实例化的类是哪一个。工厂方法让类把实例化推迟到子类。
工厂方法:创建对象用继承,扩展一个类,由子类负责具体类型
抽象方法:通过对象的组合,提供创建产品家族的抽象类型,子类定义产品产生方法,先实例化工厂,传入抽象类型缩写代码中

** 3.单例模式: 双重检查加锁 double-checked locking**

首先检查实例是否已创建,未创建再同步------------保证只有第一次才会同步 进入同步块后,在检查一次,仍为null,才创建实例
volatile修饰变量,确保被初始化成实例时,多个线程正确处理变量

4.命令模式
将请求封装成对象,这可以让你使用不同的请求,队列,或者日志请求来参数化其他对象。命令模式也可以支持撤销操作

Command

5.装饰模式
动态的将责任附加到对象上。用于扩展功能

InputStream in = new LowerCaseInputStream(new BufferedInputStream(new FileInputStream(“D:/a.txt”)));

6.外观模式
提供一个统一的接口,用来访问子系统中的一群接口。外观模式定义了一个高层的接口使子系统更容易使用。

将客户从一个复杂的子系统中解耦,将一群对象“包装”简化其接口

7.模板模式
在一个方法中定义一个算法骨架,将一些步骤迟延到子类中。模板模式使得子类在不改变算法结构的情况下,重新定义算法中的某些步骤。

一般在抽象类中定义好算法的流程,子类具体定义算法

8. 组合模式
允许你将对象组成树形结构来表现“整体/部分”的层次结构。组合能让客户以一直的方式处理个别对象和对象组合

9.状态模式
允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。

将各个状态定义为类

10.代理模式
为另一个对象提供一个替身或占位符以控制对这个对象的访问。

java.lang.reflect有代理支持 Proxy.newProxyInstance(ClassLoader loader,
Class<?>[] interfaces,
InvocationHandler h)

11.观察者模式
在对象之间定义一对多的依赖,当一个对象改变状态,依赖它的对象都会收到通知并自动更新。

java.util.Observer java.util.Observerable

12.适配器模式
讲一个类的接口转换成客户期望的另一个接口。适配器将一个对象包装起来以改变其接口

适配器改变对象适配的接口
代理实现相同的接口

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值