Java模式包括很多种,例如构造模式、责任型模式等很多种模式。
最简单的两种模式:单态模式和工厂模式
单态模式:单态模式下,对所有同一类型的Bean的请求,都将返回同一个共享实例。因此,单态模式可以大大降低Java对象创建和销毁时的系统开销。
示例代码:
public clasa SingletonTest { int value; private static SingletonTest instance; private SinglettonTest () { System.out.pringln("正在执行构造器。。。。。。"); } public static SingletonTest getInstance() { if(instance == null) { instance = new SingletonTest(); } return instance; } public int getValue() { return this.value; } public void setValue(int value) { this.value = value; } public static void main(String[] args) { SingletonTest t1 = SingletonTest.getInstance(); SingletonTest t2 = SingletonTest.getInstance(); t2.setValue(9); System.out.println(t1 == t2); System.out.println(t1.getValue() == t2.getValue()); } } 运行结果: 正在执行构造器。。。。。。 true true
由以上的执行结果可以看出,类的两个实例完全相同,这也就证明:单态模式的类的全部实例是同一个共享实例。在程序里虽然获取了类的两个实例,但实际上只执行一次构造器,因为对于单例模式的类,不管执行多少次的创建实例的请求,都只执行一次构造器,返回同一个共享实例。
单例模式虽然有有点,但也不是任何情况下都可以使用的,在多线程的状态下,如果多个线程同时操作单例的或者共享数据的时候是需要注意的,推荐搜索:单线程 单例,顺带了解下。
多线程中应用单例模式,可能会因为操作的原子性、有序性、可见性的原因,导致程序出现不可预料的错误。
单例模式的饿汉模式、懒汉模式、登记式(静态内部类)
涉及内容:同步、阻塞、synchronized 、volatile、双重检查、Initialization on Demand Holder(IODH)还有好多,什么java的内存模型啊、指令重排啊、jvm等等,内容太多了,已经要疯了
工厂模式:
工厂模式提供各个对象之间清晰的角色划分,可降低程序的耦合性。在Java的设计模式当中,工厂模式包括简单工厂模式、工厂方法模式和抽象工厂模式。
简单工厂模式:参考简单工厂模式
工厂方法模式:参考工厂方法模式
抽象工厂模式:参考抽象工厂模式