什么是单例模式和工厂模式
来源:互联网 发布:js和flash 编辑:程序博客网 时间:2024/04/30 12:13
我理解的单例模式就是一个类只能产生一个对象的时候就要用到单例模式,与之对应的是工程模式是专门用来产生对象的。
//懒汉式单例类.在第一次调用的时候实例化自己
public class Singleton {
private Singleton() {}
private static Singleton single=null;
//静态工厂方法
public static Singleton getInstance() {
if (single == null) {
single = new Singleton();
}
return single;
}
}
下面我们通过一个工厂方法进行区分:
public class Factory{
public static Sample creator(int which){
//getClass 产生Sample 一般可使用动态类装载装入类。
if (which==1)
return new SampleA();
else if (which==2)
return new SampleB();
}
}
抽象工厂
工厂模式中有: 工厂方法(Factory Method) 抽象工厂(Abstract Factory).
这两个模式区别在于需要创建对象的复杂程度上。如果我们创建对象的方法变得复杂了,如上面工厂方法中是创建一个对象Sample,如果我们还有新的产品接口Sample2.
这里假设:Sample有两个concrete类SampleA和SamleB,而Sample2也有两个concrete类Sample2A和SampleB2
那么,我们就将上例中Factory变成抽象类,将共同部分封装在抽象类中,不同部分使用子类实现,下面就是将上例中的Factory拓展成抽象工厂:
public abstract class Factory{
public abstract Sample creator();
public abstract Sample2 creator(String name);
}
//抽象工厂方法
public class SimpleFactory extends Factory{
public Sample creator(){
………
return new SampleA
}
public Sample2 creator(String name){
………
return new Sample2A
}
}
public class BombFactory extends Factory{
public Sample creator(){
……
return new SampleB
}
public Sample2 creator(String name){
……
return new Sample2B
}
}
从上面看到两个工厂各自生产出一套Sample和Sample2,也许你会疑问,为什么我不可以使用两个工厂方法来分别生产Sample和Sample2?
抽象工厂还有另外一个关键要点,是因为 SimpleFactory内,生产Sample和生产Sample2的方法之间有一定联系,所以才要将这两个方法捆绑在一个类中,这个工厂类有其本身特征,也许制造过程是统一的,比如:制造工艺比较简单,所以名称叫SimpleFactory。
在实际应用中,工厂方法用得比较多一些,而且是和动态类装入器组合在一起应用
- 什么是单例模式和工厂模式
- 单例模式,工厂模式和抽象工厂模式
- 工厂模式和单例模式
- 单例模式和工厂模式
- php-单例模式和工厂模式
- 三。工厂模式和单例模式
- PHP工厂模式和单例模式
- 单例模式和简单工厂模式
- 单例模式和工厂模式
- 单例模式和工厂模式
- 浅析单例模式和工厂模式
- java 单例模式和工厂模式
- 单例模式和工厂模式
- 单例模式和工厂模式
- 单例模式和工厂模式
- 单例模式和简单工厂模式
- 常用设计者模式---工厂模式和单例模式
- Unity3D-单例模式、观察者模式和工厂模式
- 网易2017实习生招聘笔试题 C++开发工程师
- 剑指Offer 24 二叉搜索树的后序遍历序列
- 十六进制转十进制
- 正则表达式汇总
- Spring 自动发现并注册@Component、@Service、@Repository、@Controller
- 什么是单例模式和工厂模式
- UVa 1368:DNA Consensus String
- 【abap】SE24维护类、接口interface(如何看懂CO03事务码对应的abap代码)
- 抢答器
- 十六进制转八进制
- endl与/n
- Java中的赋值
- 大小端判断
- Android的多媒体信息获取