设计模式
六大原则:
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):
每一个模块尽可能相互独立,每一个实体尽量与其他实体少发生相互作用
单例模式
饿汉式单例
在单例类被加载时候,就实例化一个对象并交给自己的引用;而懒汉式单例
只有在真正使用的时候才会实例化一个对象并交给自己的引用。
饿汉式单例:
// 饿汉式单例
public class Singleton1 {
// 指向自己实例的私有静态引用,主动创建
private static Singleton1 singleton1 = new Singleton1();
// 私有的构造方法
private Singleton1(){}
// 以自己实例为返回值的静态的公有方法,静态工厂方法
public static Singleton1 getSingleton1(){
return singleton1;
}
}
懒汉式单例:
// 懒汉式单例
public class Singleton2 {
// 指向自己实例的私有静态引用
private static Singleton2 singleton2;
// 私有的构造方法
private Singleton2(){}
// 以自己实例为返回值的静态的公有方法,静态工厂方法
public static Singleton2 getSingleton2(){
// 被动创建,在真正需要使用时才去创建
if (singleton2 == null) {
singleton2 = new Singleton2();
}
return singleton2;
}
}
简单工厂模式概述
定义:
1.定义一个工厂类,他可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类
2.在简单工厂模式中用于被创建实例的方法通常为静态(static)方法,因此简单工厂模式又被成为静态工厂方法(Static Factory Method)
结构:
Factory(工厂):核心部分,负责实现创建所有产品的内部逻辑,工厂类可以被外界直接调用,创建所需对象
Product(抽象类产品):工厂类所创建的所有对象的父类,封装了产品对象的公共方法,所有的具体产品为其子类对象
ConcreteProduct(具体产品):简单工厂模式的创建目标,所有被创建的对象都是某个具体类的实例。它要实现抽象产品中声明的抽象方法(有关抽象类)
装饰者模式(Decorator Pattern)
定义:
动态地给一个对象添加一些额外的职责,就增加功能来说,装饰者模式比生成子类更为灵活。——《设计模式:可复用面向对象软件的基础》
装饰者模式是一种对象结构型模式
使用场景:
1.在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责。
2. 需要动态地给一个对象增加功能,这些功能也可以动态地被撤销。
3. 当不能采用继承的方式对系统进行扩充或者采用继承不利于系统扩展和维护时。不能采用继承的情况主要有两类:第一类是系统中存在大量独立的扩展,为支持每一种组合将产生大量的子类,使得子类数目呈爆炸性增长;第二类是因为类定义不能继承(如final类).
角色:
抽象构件角色(Component):
定义一个对象接口或抽象类,可以给这些对象动态地添加职责。
具体构件角色(ConcreteComponent):
实际被动态地添加职责的对象。
抽象装饰者角色(Decorator):
实现了Component接口,用来扩展Component类的功能,但对于Component来说,是无需知道Decorator的存在的。
具体装饰者角色(ConcreteDecorator):
动态地添加职责的对象。
查看详情