1.单例模式
public class Singleton {
private static Singleton instance;
//外界不能直接访问
private Singleton() {
}
//static 直接通过类名去访问该方法
public static Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
public class TestSingleton {
public static void main(String[] args) {
Singleton insSingleton1 = Singleton.getInstance();
Singleton insSingleton2 = Singleton.getInstance();
System.out.println(insSingleton1 == insSingleton2);
}
}
单例模式的优势:
1.减少创建java实例带来的系统开销
2.便于系统跟踪单个java实例的生命周期、实例状态等
什么时候使用单例模式?
某个类在整个工程中只需要一个实例,就可以用单例模式。比如你的工程需要读取配置文件,一般情况下你会写个配置文件的类,而这个类在整个工程里只需要new一次,所有调用者都是用同一个实例,那么这个类就可以采用单例模式。
再比如一些管理器的类都是单例的,所有跟管理有关的操做都要调用管理器来进行,管理器不能出现多个,所以要单例,避免管理混乱。
注意:在项目中如果有很大的并发量的情况下,有可能造成同时又多个程序执行这个类实例化的方法,因此我们需要在创建类实例化方法的时候添加同步执行.
Spring框架,可以在配置Bean实例时,指定scope="singleton"来配置单例模式,默认是单例模式。
2.工厂模式
接口
public interface Output {
void out();
}
两个实现类:
public class Printer implements Output {
public void out() {
System.out.println("普通打印机输出");
}
}
public class BetterPrinter implements Output {
public void out() {
System.out.println("高级打印机输出");
}
}
工厂类
public class OutputFactory {
public static Output getOutput(String type) {
if (type.equalsIgnoreCase("better")) {
return new BetterPrinter();
} else {
return new Printer();
}
}
}
业务逻辑类
// Computer类对接口Output形成依赖,将Computer与Printer实现类分离开来
public class Computer {
//与接口关联,不与具体的实现类关联
private Output out;
public Computer(Output out) {
this.out = out;
}
public void print() {
out.out();
}
}
客户端调用
public static void main(String[] args) {
OutputFactory factory = new OutputFactory();
// Output output = factory.getOutput("normal");
Output output = factory.getOutput("better");
Computer c = new Computer(output);
c.print();
}
工厂模式的优势:统一管理对象的创建过程,客户端可以免去产品创建的责任,减小了代码的耦合度
工厂类提供多种方案,应对客户端的各种“需求”。
如果有许多地方都需要生成A的对象,那么你需要写很多A a=new A()。
如果需要修改的话,你要修改许多地方。
但是如果用工厂模式,你只需要修改工厂代码。其他地方引用工厂,可以做到只修改一个地方,
其他代码都不动,就是解耦了。
spring就是一个工厂类的具体示例
相关推荐
设计模式源代码--工厂模式与单例。 代码是本人在学习设计模式时,所写的例子。 适合设计模式的初学者看。
C++ 设计模式中的工厂模式和单例模式VC下源码实现
单例模式和工厂模式结合应用,实现了产品的生产,适合用做课程设计,包含详细文档和代码。Java语言。喜欢的可以下载来看看那
在个人自学阶段的23种设计模式代码的全部实现,全部使用Java编写,其中还包括各个设计模式在源码中的使用,每种设计模式都举了一个简单的小例子来进行实现,并加以注释 包名解释 一、DesignPattern 1.1 创建型模式 ...
java 设计模式 mvc模式 单例模式 代理 工厂 简单工厂
基于Java实现的23种设计模式Demo,抽象工厂模式、建造模式、工厂方法模式、原型模式、单例模式、外观模式、适配器模式等 Java设计模式共有23种,分别为:抽象工厂模式、建造模式、工厂方法模式、原型模式、单例模式...
细心整合和单例模式和工厂模式的几种模型,懒汉式,饿汉式,如何并发操作模式,等都有详细讲解
单例模式-果园喷洒杀虫剂 访问者模式-果农培育果树 工厂方法模式-果园引进新品种 观察者模式-果园的监控 简单工厂模式-果园种植水果 建造者模式-建造不同的果园 原型模式-建造同样的果园 桥接模式-果园实现统一的...
作者以初学者视角出发,带你一个例子读懂程序设计模式。让设计模式不再难学!C#版本,从设计需求出发为您逐层揭开设计模式的那些事。
简单工厂模式、抽象工厂模式、工厂方法模式、饿汉单例模式、懒汉单例模式
最新设计模式超级详解课程,课程深入浅出的探讨了设计模式总览,创建型模式、结构型模式、行为模式的...├─day01-总览设计模式-06-创建型模式-工厂-简单工厂模式.mp4 ├─day01-总览设计模式-07-创建型模式-工厂-工厂
NULL 博文链接:https://xieyan30.iteye.com/blog/1695483
演示设计设计模式demo-design-creating-type-01单例模式demo-design-creating-type-02-00工厂模式demo-design-creating-type-02-01工厂模式demo-design-creating-type-02-02工厂模式demo-design-creating-type-03-00...
单例设计模式、工厂设计模式和抽象工厂模式是常见的软件开发设计模式。这些设计模式提供了一些有用的思想和实现方式,可以帮助开发人员在设计和实现复杂的软件系统时,更加灵活和高效地进行编程。 单例设计模式是一...
设计模式
创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:...
java 设计模式 mvc模式 单例模式 代理 工厂 简单工厂 第二部分
javaweb项目+设计模式(单例模式,工厂模式,动态代理,适配器)
设计模式实战代码-单例、简单工厂、策略、观察者、责任链、模板模式
上篇:软件设计模式例子代码 【例2.2】简单工厂方法模式-汽车保险 【例2.3】工厂方法模式-汽车保险 【例2.4】抽象工厂模式-房屋信息 【例2.5】生成器模式-房屋信息 【例2.6】单例模式-互联网连接 ...