网站建设类型的好处延安网站设计公司
news/
2025/9/23 18:30:36/
文章来源:
网站建设类型的好处,延安网站设计公司,自适应营销网站模板,海淀西北旺网站建设闲来无事学一下设计模式#xff0c;希望这23种可以一直更下去#xff0c;什么时候能更完呢#xff0c;也许一个月#xff0c;也许一年#xff0c;也许断更
设计模式六大原则
本文是23篇的第一篇#xff0c;在学习设计模式之前#xff0c;你需要了解下六大原则。 1、开…闲来无事学一下设计模式希望这23种可以一直更下去什么时候能更完呢也许一个月也许一年也许断更
设计模式六大原则
本文是23篇的第一篇在学习设计模式之前你需要了解下六大原则。 1、开闭原则Open Close Principle 开闭原则的意思是对扩展开放对修改关闭。在程序需要进行拓展的时候不能去修改原有的代码实现一个热插拔的效果。简言之是为了使程序的扩展性好易于维护和升级。想要达到这样的效果我们需要使用接口和抽象类后面的具体设计中我们会提到这点。
2、里氏代换原则Liskov Substitution Principle 里氏代换原则是面向对象设计的基本原则之一。 里氏代换原则中说任何基类可以出现的地方子类一定可以出现。LSP 是继承复用的基石只有当派生类可以替换掉基类且软件单位的功能不受到影响时基类才能真正被复用而派生类也能够在基类的基础上增加新的行为。里氏代换原则是对开闭原则的补充。实现开闭原则的关键步骤就是抽象化而基类与子类的继承关系就是抽象化的具体实现所以里氏代换原则是对实现抽象化的具体步骤的规范。
3、依赖倒转原则Dependence Inversion Principle 这个原则是开闭原则的基础具体内容针对接口编程依赖于抽象而不依赖于具体。
4、接口隔离原则Interface Segregation Principle 这个原则的意思是使用多个隔离的接口比使用单个接口要好。它还有另外一个意思是降低类之间的耦合度。由此可见其实设计模式就是从大型软件架构出发、便于升级和维护的软件设计思想它强调降低依赖降低耦合。
5、迪米特法则又称最少知道原则Demeter Principle 最少知道原则是指一个实体应当尽量少地与其他实体之间发生相互作用使得系统功能模块相对独立。
6、合成复用原则Composite Reuse Principle 合成复用原则是指尽量使用合成/聚合的方式而不是使用继承。
其实啥意思我也看不懂总而言之就是做到低耦合高内聚。
开始正片。
介绍
单例模式Singleton Pattern是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式它提供了一种创建对象的最佳方式。
这种模式涉及到一个单一的类该类负责创建自己的对象同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式可以直接访问不需要实例化该类的对象。
单例模式是一种创建型设计模式它确保一个类只有一个实例并提供了一个全局访问点来访问该实例。
饿汉式
类装载时就进行实例化容易产生垃圾。
package singleton;/*** author yuanmengda* 饿汉式*/public class HungrySingleton {private static HungrySingleton instance new HungrySingleton();private HungrySingleton(){}public static HungrySingleton getInstance(){return instance;}
}
懒汉式
调用时才加载但方法加了synchronized效率低
package singleton;/*** author yuanmengda* 懒汉式*/
public class LazySingleton {private static LazySingleton instacne;private LazySingleton(){}public static synchronized LazySingleton getInstacne(){if(instacne null){instacne new LazySingleton();}return instacne;}
}
双重锁校验
线程安全且效率高
package singleton;/*** author yuanmengda* 双重锁校验Double-checked Locking*/
public class DCLSingleton {private volatile static DCLSingleton instance;private DCLSingleton(){}public static DCLSingleton getInstance(){if(instance null){synchronized (DCLSingleton.class){if (instance null){instance new DCLSingleton();}}}return instance;}
}
静态内部类
类似于饿汉延时加载
package singleton;/*** author yuanmengda* 静态内部类式*/
public class StaticInnerClassSingleton {private static class SingletonHolder{private static StaticInnerClassSingleton instance new StaticInnerClassSingleton();}private StaticInnerClassSingleton(){}public static StaticInnerClassSingleton getInstance(){return SingletonHolder.instance;}
}
最佳方法—枚举类
实现单例模式的最佳方法简洁且枚举类天然单例。
package singleton;/*** author yuanmengda* 枚举类*/
public enum EnumSingleton {INSTANCE;
}
测试
package singleton;/*** author yuanmengda*/
public class Main {public static void main(String[] args) {//1.饿汉式HungrySingleton instance1 HungrySingleton.getInstance();HungrySingleton instance2 HungrySingleton.getInstance();System.out.println(instance1 instance2);//2.懒汉式LazySingleton instance3 LazySingleton.getInstacne();LazySingleton instance4 LazySingleton.getInstacne();System.out.println(instance3 instance4);//3.双重锁校验DCLSingleton instance5 DCLSingleton.getInstance();DCLSingleton instance6 DCLSingleton.getInstance();System.out.println(instance5 instance6);//4.静态内部类StaticInnerClassSingleton instance7 StaticInnerClassSingleton.getInstance();StaticInnerClassSingleton instance8 StaticInnerClassSingleton.getInstance();System.out.println(instance7 instance8);//5.枚举类EnumSingleton instance9 EnumSingleton.INSTANCE;EnumSingleton instance10 EnumSingleton.INSTANCE;System.out.println(instance9 instance10);}
}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/913474.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!