设计模式六大原则
- 单一职责原则
一个类而言,应该仅有一个引起它变化的原因。
- 开放封闭原则
定义:类、模块、函数应该是可以拓展的,不可修改的。
- 里氏替换原则
所有引用基类的地方必须能透明地使用其他子类的对象。
- 依赖倒置原则
- 迪米特原则
一个软件实体应当尽可能少地与其他实体发生相互作用。
- 接口隔离原则
一个类对另一个类的依赖应该建立在最小的接口上。
创建型设计模式
- 单例模式
保证一个类只有一个实例,并提供一个访问全局访问点。
- 饿汉式 :在类加载时就完成了初始化,所以类加载比较慢,但获取对象速度比较快。基于类加载机制,避免了线程问题。如果从始至终没用这个实例,则造成内存浪费。
public Singleton{
private static Singleton instance = new Singleton();
private Singleton(){}
public static Singleton getInstance(){
return instance;
}
}
- 懒汉式 懒汉模式声明了一个静态对象,在用户第一次调用时初始化。这虽然节约了资源,但第一次加载时需要实例化,反应稍慢一些,而且在多线程时不能正常工作。
线程不安全
public Singleton{
private static Singleton instance;
private Singleton(){}
public static Singleton getInstance(){
if(instance == null){
instance = new Singleton();
}
return instance;
}
}
线程安全
public Singleton{
private static Singleton instance;
private Singleton(){}
public static synchronized Singleton getInstance(){
if(instance == null){
instance = new Singleton();
}
return instance;
}
}
静态内部类
public Singleton{
private Singleton(){}
public static Singleton getInstance(){
return SingletonHelp.instance;
}
private static class SingletonHelp{
private static final Singleton instance = new Singleton();
}
}
2.单例模式的使用场景 在一个系统中,要求一个类有且仅有一个对象,它的具体使用场景如下:
- 整个项目需要一个共享访问点或共享数据。
- 创建一个对象需要耗费的资源过多,比如访问I/O或者数据库等资源。
- 工具类对象。
- 简单工厂模式
定义:简单工厂模式属于创建型模式,其又被称为静态工厂方法模式,这是由一个工厂对象决定创
建出哪一种产品类的实例。
- 建造者模式
- 使用场景:
当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。
相同的方法,不同的执行顺序,产生不同的事件结果时。
多个部件或零件都可以被装配到一个对象中,但是产生的运行结果又不相同时。
产品类非常复杂,或者产品类中的调用顺序不同而产生了不同的效能。
在创建一些复杂的对象时,这些对象的内部组成构件间的建造顺序是稳定的,但是对象的内部组成构
件面临着复杂的变化。
- 优点:
使用建造者模式可以使客户端不必知道产品内部组成的细节。
具体的建造者类之间是相互独立的,容易扩展。
由于具体的建造者是独立的,因此可以对建造过程逐步细化,而不对其他的模块产生任何影响。- 缺点:产生多余的Build对象以及导演类。
网友评论