大龄屌丝自学笔记--Java零基础到菜鸟--035
2015-10-21 23:23
387 查看
常用设计模式:简单工厂模式、工厂方法模式、单例模式,Runtime类
1、设计模式
创建型:创建对象。
结构型:对象的组成。
行为型:对象的功能。
2、简单工厂模式(创建型)
3、工厂方法模式(创建型)
4、单例模式(创建型)
(1)饿汉
(2)懒汉
注意事项:单例模式体现类在内存中只有一个对象的思想。
开发写(1)饿汉:类一加载就创建对象,开发不会出问题。
面试写(2)懒汉:用的时候,才会创建对象,体现了延迟加载的思想,但存在安全问题(多线程环境下,可能会出现多条语句操作共享数据),所以必须加【synchronized】。
5、Runtime类
Runtime rt=Runtime.getRuntime();
扫雷:rt.exec("winmine");
记事本:rt.exec("notepad");
关机:rt.exec("shutdown -s -t 10000");
1、设计模式
创建型:创建对象。
结构型:对象的组成。
行为型:对象的功能。
2、简单工厂模式(创建型)
public abstract class Animal{ public abstract void eat(); } public class Cat extends Animal{ @Override public void eat(){ System.out.println("喵"); } } public class Dog extends Animal{ @Override public void eat(){ System.out.println("汪"); } } piblic class AnimalFactory{ private AnimalFactory(){ } public static void createAnimal(String type){ if("cat".equals(type)==true){ return new Cat(); }else if("dog".equals(type)==true){ return new Dog(); }else{ return null; } } } public class Fin{ public static void main(String[] args){ Animal cat = AnimalFactory.createAnimal("cat"); if(cat != null){ cat.eat(); }else{ System.out.println("null"); } } } //输出:喵
3、工厂方法模式(创建型)
public abstract class Animal{ public abstract void eat(); } public class Cat extends Animal{ @Override public void eat(){ System.out.println("喵"); } } public interface IFactory{ public static Animal createAnimal(); } public class CatFactory implements IFactory{ @Override public Animal createAimal(){ return new Cat(); } } public class Fin{ public static void main(String[] args){ IFactory factory = new CatFactory(); Animal cat = factory.createAnimal(); cat.eat(); } } //输出:喵
4、单例模式(创建型)
(1)饿汉
public class Cat{ private Cat(){ } private static Cat cat= new Cat(); public static Cat getCat(){ return cat; } } public class Fin{ public static void main(String[] args){ Cat cat1=Cat.getCat(); Cat cat2=Cat.getCat(); System.out.println(cat1==cat2); } } //输出:true
(2)懒汉
public class Cat{ private Cat(){ } private static Cat cat= null; public synchronized static Cat getCat(){ if(cat == null){ cat = new Cat(); } return cat; } } public class Fin{ public static void main(String[] args){ Cat cat1=Cat.getCat(); Cat cat2=Cat.getCat(); System.out.println(cat1==cat2); } } //输出:true
注意事项:单例模式体现类在内存中只有一个对象的思想。
开发写(1)饿汉:类一加载就创建对象,开发不会出问题。
面试写(2)懒汉:用的时候,才会创建对象,体现了延迟加载的思想,但存在安全问题(多线程环境下,可能会出现多条语句操作共享数据),所以必须加【synchronized】。
5、Runtime类
Runtime rt=Runtime.getRuntime();
扫雷:rt.exec("winmine");
记事本:rt.exec("notepad");
关机:rt.exec("shutdown -s -t 10000");
相关文章推荐
- java6 新特新
- java获取项目classPath路径
- Class与java反射机制
- java5 新特性
- struts技术有什么优点、好处?
- JAVA多线程--信号量(Semaphore)
- 深入理解Java的接口和抽象类
- Java记录 -42- Java Collection
- Java 7 的7个新特性
- struts2常用标签详解-在项目中使用struts2标签
- eclipse/myeclipse安装svn插件
- Java 基础之认识 Annotation
- 10007---SpringMVC 使用 POJO 对象绑定请求参数值,解决中文乱码
- 构建Gradle范例项目之构建Java项目
- JAVA将Excel中的报表导出为图片格式(一)问题背景
- 序列化与反序列化
- java设计模式之单例模式(几种写法及比较)
- Nachos导入eclipse
- JAVA---多线程之Callable与Future,FutureTask,及其简单应用
- 如何创建不可变(Immutable)的Java类或对象