`
jackroomage
  • 浏览: 1197466 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

Java设计模式之单子模式应用

阅读更多
前不久在被问到一个问题,有关Java的界面的编程,当点击一个按钮时,要产生一个窗体,但是每点一次都会产生一个,由此想到

了Java的设计模式之单子模式,利用单子模式很好的解决了这个问题.
单子模式就是一个类只能产生一个实例.代码如下:
package test;
import javax.swing.JFrame;
import javax.swing.JButton;
import java.awt.*;
import javax.swing.JLabel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
//单子模式类
public class SingletonDemo extends JFrame {
  //一个私有的,静态的本类对象
    private static SingletonDemo testFrame=new SingletonDemo();
    JLabel jLMes = new JLabel();
   //构造必须是私有的,这样其它的类才不能访问
    private SingletonDemo() {
        getContentPane().setLayout(null);    
        this.getContentPane().add(jLMes);
        this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        jLMes.setText("这是产生的唯一窗体");
        jLMes.setBounds(new Rectangle(103, 53, 230, 96));     
    }
// 公有的静态方法返回一个本类对象
    public static synchronized SingletonDemo getInstance()    {
        return testFrame;
    }
}
//测试类
class Test extends JFrame {
  
     JButton jBFrame = new JButton();
     public Test() {
        getContentPane().setLayout(null);
        jBFrame.setBounds(new Rectangle(125, 182, 118, 43));
        jBFrame.setText("单击产生唯一窗体");
      
  this.jBFrame.addActionListener(new MyActionListener());
   this.getContentPane().add(jBFrame);
         this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        this.setSize(300,200);
        this.setVisible(true);
    }
    public static void main(String[] args) {
        Test test = new Test();
    }
   
    class MyActionListener implements ActionListener {
      //单击按钮时调用单子模式类的静态方法,获得一个对象
        public void actionPerformed(ActionEvent e) {
            SingletonDemo testFrame=SingletonDemo.getInstance() ;
            testFrame.setSize(300,200);    
            testFrame.setVisible(true);           

        }
    }
}
创建一个单子类必须满足以下三个条件:
1.构造器私有
2.提供一个私有静态变量引用实例
3.提供一个共有,静态方法获得实例.
分享到:
评论

相关推荐

    北邮java李劼java大作业,设计模式二

    1. 假设现在要设计一个贩卖各类书籍的电子商务网站的购物车系统。对所有的教材类图书 实行每本一元的折扣;对连环画类图书提供每本7%的促销折扣;...使用策略模式、工厂模式、单子模式进行设计,类图如下。

    23种java设计模式

    用java代码实现的23种经典模式:如单子模式,工厂模式等

    C++单例设计模式

    单例模式也称为单件模式、单子模式,可能是使用最广泛的设计模式。其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。有很多地方需要这样的功能模块,如系统的日志输出,...

    北邮Java大作业低配版

    设计模式一(单子、工厂、策略模式)练习 1. 假设现在要设计一个贩卖各类书籍的电子商务网站的购物车系统。对所有的教材类图书 实行每本一元的折扣;...使用策略模式、工厂模式、单子模式进行设计

    设计模式一(单子、工厂、策略模式)练习 .zip

    设计模式一(单子、工厂、策略模式)练习 1. 假设现在要设计一个贩卖各类书籍的电子商务网站的购物车系统。对所有的教材类图书 实行每本一元的折扣;...使用策略模式、工厂模式、单子模式进行设 计

    图书管理系统-Java-大作业

    图书管理系统 北邮 大三上学期 面向对象的分析与设计(Java) ...运用工厂模式、观察者模式、策略模式、组合模式和单子模式等设计模式 完善的类继承和组合关系 包含添加库存、图书订购、折扣策略管理等功能

    北邮java选修大作业 购物车

    大作业设计模式一(单子、工厂、策略模式)练习 假设现在要设计一个贩卖各类书籍的电子商务网站的购物车系统。对所有的教材类图书 实行每本一元的折扣;...使用策略模式、工厂模式、单子模式进行设计

    java 做的快递单子打印

    java打印快递面单,自己做得程序,能预先。安装jdk,属于cs程序。

    java实验:设计模式2.doc

    java实验: 设计模式(单子、工厂、策略、组合、观察者模式)练习 在上次作业基础上,设计一个贩卖各类书籍的电子商务网站的购物车系统。该系统包括 的模块有: 模块1:图书目录的添加模块,实现对书本信息的增加。 ...

    JDBC的连接实例 单子模式的写法

    jdbc和java的连接 单子模式的写法

    java练习作业

    java练习作业

    (两种)单子模式 (饿汉,懒汉)

    详细讲述了单子模式的两种模式(饿汉,懒汉)

    Java基础实战Bank项目文档需求源代码8个项目打包

    法的重写、包装类、单子模式、异常、集合。 2. 涉及较复杂业务: 以银行业务为背景,包含:添加客户,创建异构账户、存 钱、取钱、透支保护等业务。 3. 类之间多重引用、依赖关系: 该项目包含 Bank、 Customer、 ...

    购物车系统——Java大作业.zip

    单子、工厂、策略、组合、观察者模式 ...使用策略模式、工厂模式、单子模式进行设计,类图如下。 在设计模式一的作业基础上,设计一个贩卖各类书籍的电子商务网站的购物车系统。该系统包括的模块有:

    java项目之教务管理系统

    * 使用单子设计模式主界面对象 * */ private MainFrame() { init(); } public static MainFrame getInstance() { if (instance == null) { instance = new MainFrame(); } return instance; ...

    瑞萨单子R7F0C系列单片机典型应用

    瑞萨单子R7F0C系列单片机典型应用,瑞萨单子R7F0C系列单片机典型应用

    java 编程入门思考

    16.1.1 单子 16.1.2 范式分类 16.2 观察器范式 16.3 模拟垃圾回收站 16.4 改进设计 16.4.1 “制作更多的对象” 16.4.2 用于原型创建的一个范式 16.5 抽象的应用 16.6 多重派遣 16.6.1 实现双重派遣 16.7 访问器范式 ...

    JAVA知识问答器

    java编的知识问答器,包含JAVA大部分知识,涉及到单子模式,管理员,题目均放在属性文件里面!

    Java初学者入门教学

    16.1.1 单子 16.1.2 范式分类 16.2 观察器范式 16.3 模拟垃圾回收站 16.4 改进设计 16.4.1 “制作更多的对象” 16.4.2 用于原型创建的一个范式 16.5 抽象的应用 16.6 多重派遣 16.6.1 实现双重派遣 16.7 访问器范式 ...

Global site tag (gtag.js) - Google Analytics