java与模式购买(java 单例模式 介绍)

本文目录
java 单例模式 介绍
一是某个类只能有一个实例;
二是它必须自行创建这个实例;
三是它必须自行向整个系统提供这个实例
public class Singleton { //在自己内部定义自己的一个实例,只供内部调用
private static Singleton instance = new Singleton();
private Singleton(){ //do something
}
//这里提供了一个供外部访问本class的静态方法,可以直接访问
public static Singleton getInstance(){
return instance;
}
简单的理解:
1.必须有一个私有的静态对象指向自己
2.私有的构造方法,防止new对象
3.提供一个方法,供外部获取本身对象
求一个三种设计模式结合的java小程序
//##食堂:DinningHall.java
public class DinningHall{
private DinningHall instance = null;
private DinningHall{
}
public static DinningHall getInstance(){
//单例模式:创建食堂对象
if(instance == null){
instance = new DinningHall();
}
return instance;
}
public Food createFood(String order){
//工厂模式:创建一些吃的
if("1号菜".equals(order)){
//比如菜单上1号菜是鱼香肉丝
return new YuXiangRouSi();
}
else if("2号菜".equals(order)){
//比如菜单上2号菜是宫保鸡丁
return new GongBaoJiDing();
}
else{
return null;
}
}
//建造者模式start:集中管理,生产一些吃的东西
private List《Food》 list = new ArrayList《Food》();
public List《Food》 getFoods(){
return list;
}
public void produceSomeMantou(int count){
for(int i=0; i《count; i++){
list.add(new ManTou());
}
}
//建造者模式end
}
//##食物:Food.java
public interface Food(){
public String getName();
}
//##鱼香肉丝:YuXiangRouSi.java
public class YuXiangRouSi implements Food(){
public String getName(){
return "鱼香肉丝";
}
}
//##宫保鸡丁:GongBaoJiDing.java
public class GongBaoJiDing implements Food(){
public String getName(){
return "宫保鸡丁";
}
}
//##馒头:Mantou.java
public class Mantou implements Food(){
public String getName(){
return "馒头";
}
}
//##测试类Tester.java
public class Tester{
public static void main(){
//1.单例模式
DinningHall dh = DinningHall.getInstance();
//2.工厂模式
Food f1 = DinningHall.createFood("1号菜");
System.out.println(f1.getName());
//3.建造者模式
DinningHall.produceSomeMantou(5);
List《Food》 foods = DinningHall.getFoods();
for(Food f : foods){
System.out.println(foods +"\t");
}
System.out.println();
}
}
java设计模式prototype模式
按我的理解,原型引入的根本原因就是在于它可以利用一个原型对象(在这,我指的是实例,而非类),快速地生成一批和原型对象一样的实例。举个例子来说,你有一个类A的实例a (A a=new A()),现在你想生成一个和a一样的实例b,那么,按照原型的定义,你应该可以这样做b=a.clone()。这样,你就可以得到一个和a一模一样的实例b(即a和部b的数据成员的值完全一样)。
上面是原型的一个简单说明,那么引入原型有什么好处呢?按我的理解,就是在于:你如果要生成一大批很相像的类的实例时,省得每次去做重复的赋值工作。再举个例子,如果你有一个类A,它有十个成员变量,现在你打算生成100个A的实例,而这些实例的变量值大部分相同(比如说七个相同),只有一小部分不一样(比如说三个),那么如果没有Prototype,那么你就得每次New一个A的对像,然后赋值,这样,你要重复100次同样的七个变量的赋值工作,显然,这样很麻烦。现在你有了原型,那么问题就简单了,你只要生成一个A的实例,再通过clone来生成其它的实例,然后再一一修改其它实例不同的地方。
Oracle新定价模式有点坑,有什么更好的JAVA平台推荐么
Oracle的新定价并不根据使用量向客户收费,而是根据客户整个公司的员工和承包商数量收费,而这其中员工就包括了企业的全职、兼职和临时员工,承包商就包括了企业提供支持的代理商、承包商、外包商、顾问等等,无论他们是否使用JAVA。这样一来,Oracle的订阅费用就能轻轻松松增加2至10倍不等。
面对Oracle如此“坑”的新定价模式,更多睿智的企业选择当机立断,更换了定价模式更为合理、运行响应速度又快又稳定的Azul旗下的产品。相比之下,Azul也是更好的JAVA平台。
Azul的定价模式与Oracle完全不同,Azul的产品和服务是专门为企业非常重要的业务关键型应用程序提供支持的,根据企业客户的使用量和JAVA平台为企业带来的价值来进行收费,其许可/支持费用通常比Oracle低70%,如今,Azul已成为企业满意度100%的专业JAVA平台提供商。

更多文章:
全球新冠肺炎疫情背景下航运发展(盐田港复苏日志:半年历劫从“低谷”到“爆仓” 疫情之后巨轮如何越洋航行)
2026年9月7日 17:10
matlab求解带字母参数方程组(我想matlab求一个关于x,y的方程组 ab c d f e h m n 都是参数)
2026年9月7日 16:30
oracle中的循环语句(下面哪个不是oracle程序设计中的循环语句 a for)
2026年9月7日 15:30
电脑里2个系统怎么删除一个(电脑开机显示有两个系统,如何删除一个)
2026年9月7日 12:20
scrollthrough意思(“scroll”是什么意思)
2026年9月7日 08:00
怎么激活keygen(注册机如何激活cad2008一个简单激活cad2008的方法)
2026年9月7日 06:30



