本文小编为大家详细介绍“web设计模式有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“web设计模式有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
创建型模式:– 单例模式、工厂模式、抽象工厂模式、建造者模式、原型模式。
结构型模式:– 适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、式。
行为型模式:– 模版方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备式、解释器模式、状态模式、策略模式、职责链模式、访问者
其实这些设计模式只是一种思想,大家不需要把代码全部背下来,而是将设计者的思维融入大家的学习和工作中,更高层次的思考!
单例模式主要分为2种,其他的类型我们不做解释:饿汉式(线程安全,调用效率高。 但是,不能延时加载。)
懒汉式(线程安全,调用效率不高。 但是,可以延时加载
那么单例有什么作用呢?
核心作用:– 保证一个类只有一个实例,并且提供一个访问该实例的全局访问
给大家举几个很常见的例子
– Windows的Task Manager(任务管理器)就是很典型的单例模式
– windows的Recycle Bin(回收站)也是典型的单例应用。在整个系统运行过程中,回收站一直维护着仅有的一个
有啥子优点:
– 由于单例模式只生成一个实例,减少了系统性能开销,当一个对象的产生需要比较多的资源时,如读取配置、产生其他依赖对象时,则可以通过在应用启动时直接产生一个单例对象,然后永久驻留内存的方式来解决
– 单例模式可以在系统设置全局的访问点,优化环共享资源访问,例如可以设计一个单例类,负责所有数据表的映射
public class SingletonDemo1 {
//类初始化时,立即加载这个对象(没有延时加载的优势)。加载类时,天然的是线程安全的!
private static SingletonDemo1 instance = new SingletonDemo1();
private SingletonDemo1(){
}
//方法没有同步,调用效率高!
public static SingletonDemo1 getInstance(){
return instance;
}
}
饿汉式,顾名思义,一个字-饿,必然是一加载这个类,马上就new出一个对象(static变量会在类加载的时候初始化)此时也不会涉及多个线程对象访问该对象的问题。虚拟机保证只会装载一次该类,肯定不会发生并发访问的问题。因此,可以省略synchronized关键。
但是存在一个问题:就是当我们无论是否使用了这个对象,它都帮我们new出来这个对象,这会导致资源的浪费!
public class SingletonDemo2 {
//类初始化时,不初始化这个对象(延时加载,真正用的时候再创建)。
private static SingletonDemo2 instance;
private SingletonDemo2(){ //私有化构造器
}
//方法同步,调用效率低!
public static synchronized SingletonDemo2 getInstance(){
if(instance==null){
instance = new SingletonDemo2();
}
return instance;
}
}
懒汉式,顾名思义,一个字-懒,也就是当我们需要他的时候,我们就把他new出来,不需要的时候就不会new出它。
但是也会出现一些问题: 资源利用率高了。但是,每次调用getInstance()方法都要同步,并发效率较
读到这里,这篇“web设计模式有哪些”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。