java单例模式,单例模式懒汉和饿汉( 三 )


");}}程序运行结果如下:产生一个总统!我是美国总统:特朗普 。已经有一个总统 , 不能产生新总统!我是美国总统:特朗普 。他们是同一人!【例2】用饿汉式单例模式模拟产生猪八戒对象 。分析:同上例类似 , 猪八戒也只有一个 , 所以本实例同样适合用单例模式实现 , 所以用到了框架窗体 JFrame 组件 , 这里的猪八戒类是单例类 , 可以将其定义成面板 JPanel 的子类 , 里面包含了标签 , 用于保存猪八戒的图像 , 客户窗体可以获得猪八戒对象 , 并显示它 。
图 3 所示是用饿汉式单例实现的结构图 。图3 猪八戒生成器的结构图程序代码如下:import java.awt.*;import javax.swing.*;public class SingletonEager {public static void main(String[] args) {JFrame jf = new JFrame("饿汉单例模式测试");jf.setLayout(new GridLayout(1, 2));Container contentPane = jf.getContentPane();Bajie obj1 = Bajie.getInstance();contentPane.add(obj1);Bajie obj2 = Bajie.getInstance();contentPane.add(obj2);if (obj1 == obj2) {System.out.println("他们是同一人!");} else {System.out.println("他们不是同一人!");}jf.pack();jf.setVisible(true);jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}}class Bajie extends JPanel {private static Bajie instance = new Bajie();private Bajie() {JLabel l1 = new JLabel(new ImageIcon("src/Bajie.jpg"));this.add(l1);}public static Bajie getInstance() {return instance;}}程序运行结果如图 4 所示 。
java开发在现在这种微服务架构体系中 , 业务代码还能使用各种设计模式吗?如工厂?
当然能使用各种设计模式 , Spring框架中有很多设计模式的体现 , 只要能在微服务体系中最终满足BASE理论 , 不还是照样在使用?先说说设计模式设计模式不是一种框架或中间件技术 , 而是对学习工作中代码进行高层次抽象的总结 。设计模式不限于某种编程语言 , JavaScript有设计模式 , Java也有设计模式 , 只是表象不同而己 。
根据用途可将设计模式分为三类:结构型模式、行为型模式和创建型模式 。经典设计模式有23种 , 每一个设计模式也有多种实现 , 例如单例模式(懒汉、饿汉、静态内部类和DCL等) , 还是题主说到的工厂模式(简单工厂模式、工厂方法模式等)等 。分布式与微服务架构随着开发的项目越来越繁杂 , 开发效率和高并发情况下要求高可用 , 项目模块化与容错机制就显得很有必要 , 分布式孕育而生 。
将每个开发模块部署到独立的云服务主机上 , 就好像多个人在一起做不同分工的事 , 但是整个过程是相互协作完成 , 这和集群的理念相反 。而微服务算是一种架构 , 也属于分布式范畴 , 例如SpringCloud就是微服务架构的一种体现 。Spring中常用的设计模式学习Java语言 , Spring是必经之路 , SringMVC和SringBoot等都是Sring框架的衍生品 。
【java单例模式,单例模式懒汉和饿汉】现在使用SringBoot结合SpringCloud实现微服务与分布式不是什么新鲜技术 , 在初创或者开发成本预算不多的公司已经是首先技术架构 , 上手容易 , 生态支持友好 。Spring框架中有很多设计模式体现 。例如简单工厂模式之BeanFactory , 根据传入一个唯一的标识来获得Bean对象 。再比如Spring下默认的Bean注解均为单例模式 , 将提供一个访问它的全局访问点 , 你可以通过设置singleton=“true 。

推荐阅读