您的位置:首页 > 编程语言 > Java开发

大龄屌丝自学笔记--Java零基础到菜鸟--035

2015-10-21 23:23 387 查看
常用设计模式:简单工厂模式、工厂方法模式、单例模式,Runtime类

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");
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: