设计模式Note

一 、工场方法模式

工厂类负责定义创建对象的接口,具体对象创建由继承工场类的具体类实现。
优点:每个类有不同的责任,不影响现有代码,后期维护容易,增强扩展性。
确定:写起来麻烦。

举个栗子:
/** 抽象汽车类,里面有驾驶的抽象方法**/
public abstract class Car{
  public abstract void drive();
}
/** 工场类接口,抽象的创建汽车类方法**/
public interface Factory{
  public abstract Car createCar();
}
/**具体的大众车类,重写抽象方法**/
public class Das extends Car{
  public void drive(){
    System.out.println("DasAuto");
  }
}
/**大众工场类,实现工场的抽象方法,返回一个大众对象**/
public class DasFactory implements Factory{
  public Car createCar(){
    return new Das();
  }
}
/**具体的宝马车类,重写抽象方法**/
public calss BMW extends Car{
   public void drive(){
    System.out.println("BMW");
  }
  public void expensive(){
    System.out.println("我很贵");
  }
}
/**宝马工场类,实现工场的抽象方法,返回一个宝马对象**/
public class BMWFactory implements Factory{
   public Car createCar(){
    return new BMW():
  }
}
public class TestDemo{
  public static void main(String[] args){
    //生产一个大众车
    Factory f = new DasFactory();
    Car car = f.createCar();
    car.driver();//DasAuto
    //生产一个大众车
    f = new BMWFactory();
    car = f.createCar();
    car.driver();//BMW
    car.expensive();//我很贵
  }
}

二、单例设计模式

类在内存中只有一个对象,并且自动创建,并对外提供。

1.饿汉模式

/**思想是唯一的**/
public class Idea{
  private Idea(){}
  private static Idea idea = new Idea();//自己构建一个对象,其他类不能直接访问
  public static Idea getIdea(){return idea;}//对外提供生成的对象
}
public class TestDemo{
  public static void main(String[] arg){
    Idea idea1 = Idea.getIdea();//得到对象
    Idea idea2 = Idea.getIdea();//得到对象
    System.out.println(idea1 == idea2);//输出为true
  }
}

1.懒汉模式

public class Shit{
  private Shit(){}
  private static Shit s = null;
  public synchronized static Shit getShit(){
    if(s==null) s = new Shit();
    return s;
  }
}

public class TestDemo{
  public static void main(String[] arg){
    Shit s1 = Shit.getShit();
    Shit s2 = Shit.getShit();
    System.out.println(s1 == s2);//输出为true
  }
}

比较:

饿汉模式是不会出现问题的单例模式
懒汉模式有线程安全的问题(多线程环境,有共享数据,有多投语句操作共享数据)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 单例模式(SingletonPattern)一般被认为是最简单、最易理解的设计模式,也因为它的简洁易懂,是项目中最...
    成热了阅读 4,310评论 4 34
  • 1 单例模式的动机 对于一个软件系统的某些类而言,我们无须创建多个实例。举个大家都熟知的例子——Windows任务...
    justCode_阅读 1,490评论 2 9
  • 1 场景问题# 1.1 读取配置文件的内容## 考虑这样一个应用,读取配置文件的内容。 很多应用项目,都有与应用相...
    七寸知架构阅读 6,894评论 12 68
  • 我能这样打字,自然可以证明我不是一只猫。估计……不用估计,我这辈子也不会有机会做一只猫,只能以人的形式过完这一辈子...
    Paperite阅读 195评论 0 1
  • “体制,从来不是外化于我们的怪物,体制,就是我们每一个曾经投身于其中的个人。当遭遇不公,你沉默不语,你就是体制;当...
    南国飘香阅读 427评论 0 1