设计模式

设计模式(二)

1、单例模式

单例模式提供了一种创建对象和获取对象的方法,该方法使得类内部创建一次该实例,使用该实例时不需要再次创建(一般也不能再次创建)。
1、创建该类,构造方法设为private(其他类就调用不到该构造方法)

public class Animal {

    private String name;

    private static Animal instance = new Animal();

    private Animal() {
        name = "动物";
    }

    public static Animal getInstance() {
        return instance;
    }

    public void showName(){
        System.out.println(name);
    }
}

2、测试

public class Main {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Animal animal = Animal.getInstance();
        animal.showName();
    }

}

3、输出(控制台输出)

动物

2、享元模式

享元模式的思想是尽可能复用已创建的对象,避免创建新对象。
1、创建接口

public interface Biology {
    public void show();
}

2、创建Animal类,Animal具有名字和表演方法

public class Animal implements Biology{
    private String name;

    public void show() {
        // TODO Auto-generated method stub
        System.out.println("轮到"+name+"表演啦!!");
    }

    public Animal(String name){
        this.name=name;
    }

}

3、创建Zoo,Zoo有笼子,并且会购买Animal并且让它们表演,当要表演的动物笼子里没有时,就需要去市场购买。

public class Zoo {
    //笼子,动物园所有动物都在这里
    public static final Map<String , Animal> animals =new HashMap();

    public void show(String str){
        Animal animal = (Animal) animals.get(str);  
        if(animal == null){
            animal = new Animal(str);
            System.out.println("动物园没有"+str+",快去买!!!");
            //将新买的动物放进笼子里
            animals.put(str, animal);
        }
        animal.show();
    }
}

4、测试(随机让各种Animal参加表演,看Zoo是否每次都创建Animal)

public class Main {
    public static void main(String[] args) {
        String[] animals={"狮子","老虎","大象","熊猫","长颈鹿"};
        Zoo zoo = new Zoo();
        for(int i=0;i<20;i++){
            String ShowingAnimal = animals[(int) (Math.random()*animals.length)];
            zoo.show(ShowingAnimal);
        }
    }
}

5、结果(控制台输出)

动物园没有熊猫,快去买!!!
轮到熊猫表演啦!!
动物园没有狮子,快去买!!!
轮到狮子表演啦!!
轮到熊猫表演啦!!
动物园没有老虎,快去买!!!
轮到老虎表演啦!!
轮到老虎表演啦!!
动物园没有长颈鹿,快去买!!!
轮到长颈鹿表演啦!!
轮到老虎表演啦!!
轮到熊猫表演啦!!
轮到狮子表演啦!!
轮到老虎表演啦!!
轮到狮子表演啦!!
轮到长颈鹿表演啦!!
轮到狮子表演啦!!
轮到长颈鹿表演啦!!
轮到老虎表演啦!!
轮到老虎表演啦!!
动物园没有大象,快去买!!!
轮到大象表演啦!!
轮到狮子表演啦!!
轮到熊猫表演啦!!
轮到长颈鹿表演啦!!

结论:

享元模式可以尽可能的节省创建对象所花费的资源。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值