七大设计模式
1.开闭原则:开闭原则是设计模式的总原则,对拓展开放,对修改关闭,尽可能少地改变已有模块。优点是提
高了代码的复用性和代码的可维护性。
2.单一职责原则:类,接口,方法功能单一,职责明确。优点是提高了代码的可读性,可维护性,降低类的复杂性。
3.里氏替换原则:任何基类可以出现的地方,子类一定可以出现,并且将父类用子类替换后,也不会产生任何问题。父类如果是P,子类是L,那么必须L≥P。优点是提高了代码复用性和可拓展性。
4.依赖倒置原则:依赖于抽象类,不依赖具体实现,目的是指定好规范,而不涉及任何具体的操作,把展现细节的任务交给他们的实现类来完成。
5.接口隔离原则:尽量使用多个专门的接口专门提供给不同的模块,客户端不应依赖它不需要的接口,类间的依赖关系应该建立在最小的接口上。
6.迪米特法则:也叫最少知识原则,一个实体应当尽可能少得与其他实体发生相互作用,初衷在于降低类之间的耦合
7.合用复用原则:通过将已有的对象纳入新对象中,作为新对象的成员对象来实现的,新对象可以调用已有对象的功能,从而达到复用。
单例模式
使用场景:创建一个对象需要消耗太多的资源或者在一个系统中不适合创建多个对象实例的情况下,采用单例模式解决。
在一个系统中,一个类有且仅有一个对象实例
Instance instance =new Instance()
饿汉式的单例模式:
在初始化的时候即创建了对象,在需要的时候可以直接返回该对象实例。在类创建的时候就生成静态成员变量供外部使用。
描述:这种方式比较常用,但容易产生垃圾对象。
优点:没有加锁,执行效率会提高。
缺点:类加载时就初始化,浪费内存。
懒汉式的单例模式:
描述:这种方式具备很好的 lazy loading,能够在多线程中很好的工作,但是,效率很低,99% 情况下不需要同步。
优点:第一次调用才初始化,避免内存浪费。
缺点:必须加锁 synchronized 才能保证单例,但加锁会影响效率。
getInstance() 的性能对应用程序不是很关键(该方法使用不太频繁)。
工厂模式
一、概念
1、实例化对象,用工厂方法代替new操作;
2、包括工厂方法模式和抽象工厂模式;
3、抽象工厂模式是工厂模式的推广。
二、意图
1、定义一个【接口】来创建对象,但是让子类来决定哪些类需要被实例化;
2、工厂方法把实例化的工作推迟到子类中去实现。
三、适合的情况:
1、有一组类似的对象需要创建。
2、在编码的时候不能预见需要创建哪种类的实例。
3、系统需要考虑扩展性,不应依赖于产品类实例化如何被创建,组合和表达的细节。