------------恢复内容开始------------
第四部分 Java SE基础
4.1设计模式和常用的设计模式
4.1.1 设计模式就是经过前人无数次的实践总结出的,设计过程中可以反复使用的,可以解决特定问题的设计方案。
提供一个方法获取该实例对象(创建时需要进行方法同步)
工厂模式:Spring IOC就是使用的工厂模式 对象的创建交给一个工厂去创建。
代理模式:Spring AOP就是使用的动态代理。
4.1.2 单例模式
这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。
一、懒汉模式:构造方法私有化,让除了自己类能创建外其他地方都不能创建
//1.非线程安全懒汉模式,
public class SingletonDemo { private static SingletonDemo instance; private SingletonDemo(){ } public static SingletonDemo getInstance(){ if(instance==null){ instance=new SingletonDemo(); } return instance; } }
//2、 线程安全懒汉模式 public class SingletonDemo { private static SingletonDemo instance; private SingletonDemo(){ } public static synchronized SingletonDemo getInstance(){ if(instance==null){ instance=new SingletonDemo(); } return instance; } }
二、饿汉模式
直接在运行这个类的时候进行一次 loading,之后直接访问。显然,这种方法没有起到lazy loading 的效果,考虑到前面提到的和静态类的对比,这种方法只比静态类多了一个内存常驻而已。
在自己的类中创建一个单实例(饱汉模式是一出来就创建单实例,而饥汉模式是需要的时候才创建)
public class SingletonDemo { private static SingletonDemo instance=new SingletonDemo(); private SingletonDemo(){ } public static SingletonDemo getInstance(){ return instance; } }
4.1.3 设计模式六大原则
1. 单一职责原则(Single Responsibility Principle, SRP) :一个类只负责一个功能领域中的相应职责,或者可以定义为:就一个类而言,应该只有一个引起它变化的原因。
2. 开闭原则(Open-Closed Principle, OCP): : 一个软件实体应当对扩展开放 , 对修改关闭。即软件实体应尽量在不修改原有代码的情况下进行扩展。
3. 里氏代换原则(Liskov Substitution Principle, LSP) :所有引用基类(父类)的地方必须能透明地使用其子类的对象。
4. 依赖倒转原则(Dependency Inversion Principle, DIP) :抽象不应该依赖于细节,细节应当依赖于抽象。换言之,要针对接口编程,而不是针对实现编程
5. 接口隔离原则(Interface Segregation Principle, ISP) :使用多个专门的接口,而不使用单一的总接口,即客户端不应该依赖那些它不需要的接口。
6. 迪米特法则(Law of Demeter, LoD) :一个软件实体应当尽可能少地与其他实体发生相互作
-----------------------------------------------------------------------------------我是分割线---------------------------------------------把所有的春天都揉进一个清晨----------------------------------------------------------------------------
------------恢复内容结束------------
原文地址:https://www.cnblogs.com/creative-work/p/12499698.html