前不久在被问到一个问题,有关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.提供一个共有,静态方法获得实例.
分享到:
相关推荐
单子模式中的关键在于构造函数私有和唯一实例,以确保单例类在整个应用程序中只存在一个实例。 8. 观察者模式中的观察者角色是被动接收更新的,被观察者负责通知所有观察者进行相应的更新,但不应由观察者去改变被...
在这个Java实验中,我们主要涉及了五个设计模式:单子(Singleton)、工厂(Factory)、策略(Strategy)、组合(Composite)和观察者(Observer)模式。这些模式被应用于构建一个电子商务网站的购物车系统。 首先...
单子模式是一种设计模式,它的主要目标是确保一个类在整个应用程序中只有一个实例,并提供一个全局访问点来获取这个唯一的实例。这种模式常用于系统管理类,如日志、配置对象等,以避免资源浪费和保证数据一致性。 ...
### Java编程基础实战知识点解析 #### 一、数学问题求解与循环控制 **知识点1:多重循环解决数学方程** 在题目中的第一个例子中,我们看到了如何利用嵌套循环来解决数学问题。具体而言,代码通过三重`for`循环遍历...
单子模式是最基础的设计范式之一,它确保一个类只有一个实例,并提供全局访问点。在Java中,单子模式常用于控制资源的唯一性,如配置管理、日志记录等。实现单子模式的关键在于限制构造函数的访问权限,通常设置为...
函数式设计模式是指在函数式编程中使用的模式,用于解决特定的设计问题。在函数式编程中,函数被视为一等公民,这意味着函数可以像任何其他数据类型一样被传递和返回。函数式编程强调不可变性和纯函数,这有助于创建...
202 10.3.3 父子类间的构造器的调用流程 204 10.3.4 如何自定义构造器 207 10.4 什么是单子模式 208 10.5 构造器在程序中是何时运行的 211 10.6 综合练习 214 10.7 小结 215 10.8 习题 215 第11章 异常处理(精彩...
- **第10章**:这一章可能涉及更多高级的函数式编程结构和技术,如单子(Monads)、应用型(Applicatives)、折迭(Folds)等,进一步深化对函数式编程的理解和应用能力。 综上所述,《Functional Programming in Scala》...
5. **结果分析**:实验结果可能表明,无论是在单子群、k子群还是任意子群模式下,GPSO都表现出了优于单一PSO或遗传算法的性能。特别是在某些特定的优化问题上,特定的并行策略可能显示出更好的性能。 6. **未来工作...
此外,了解莱布尼兹的单子哲学如何影响到软件设计,可以帮助开发者理解如何将哲学理念应用于编程实践中,创造更加自足和稳定的系统。 总结一下,"化身MUD服务器"是一个基于Java的开源MUD服务器项目,其设计理念深受...
一般来说,Monad是一种设计模式具体来说,Monad是实现并满足的数据结构。 Monad是在Haskell中引入的,但是任何支持高阶函数的语言都可以实现Monad,例如Javascript / Coffeescript单子类型类类型类是Haskell中的一...