java设计模式及其原则(未完)
设计模式遵循六大原则
- 里氏替换原则
子类可以扩展父类的功能,但不能改变父类原有的功能。它包含以下4层含义:
子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法。
子类中可以增加自己特有的方法。
当子类的方法重载父类的方法时,方法的前置条件(即方法的形参)要比父类方法的输入参数更宽松。
当子类的方法实现父类的抽象方法时,方法的后置条件(即方法的返回值)要比父类更严格。
- 依赖倒置原则
高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。依赖倒置原则的核心思想是面向接口编程
- 接口隔离原则
客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。
- 迪米特法则
一个对象应该对其他对象保持最少的了解
- 开闭原则
一个软件实体如类、模块和函数应该对扩展开放,对修改关闭
- 单一职责原则
即一个类只负责一项职责。
26种设计模式(分类概述)
创建型模式
单例模式,工厂模式(简单工厂模式,工厂方法模式),抽象工厂模式,建造者模式,原型模式
结构型模式
适配器模式,桥接模式,装饰模式,组合模式,外观模式,享元模式,代理模式
行为型模式
模板方法模式,命令模式,迭代器模式,观察者模式,中介者模式,备忘录模式,解释器模式,状态模式,策略模式,职责链模式,访问者模式
26种设计模式(详细介绍)
单例模式
饿汉式:简单,不存在同步问题。对象在使用前就创建,占内存。
//饿汉式单例模式
public class EhSingleton {private EhSingleton(){};private static EhSingleton eh=new EhSingleton();public static EhSingleton getEhSingleton(){return eh;}
}
饱汉式:延迟加载,存在同步问题
//饱汉式单例模式,双重验证锁模式 DCL懒汉式
public class BhSingleton {private BhSingleton(){};private volatile static BhSingleton bhSingleton=null;public static BhSingleton getBhSingleton(){if(bhSingleton==null){synchronized(BhSingleton.class){if(bhSingleton==null){bhSingleton=new BhSingleton();//不是原子操作,会发生指令重排序,使用volatile关键字}}}return bhSingleton;}
}
使用静态内部类实现
public class singleton{
private singleton(){};
public static sibgleton getsingleton(){
return innerclass.SINGLETON;
};
public static class innerclass{
private static final singleton SINGLETON=new singleton();
单例模式是不安全的。因为有反射的存在。但是,反射不能破坏枚举的单例enum






工厂模式
简单工厂:静态工厂,不符合开闭原则。一个工厂生产多种产品。
public class CarFactory {public Car getCar(String name){if(name=="aodi")
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

