文章原地址:https://blog.csdn.net/zhangerqing/article/details/8194653
一.设计模式六大原则:
1.开闭原则(Open Close Principle):对扩展开放,对修改关闭。
2.里氏代换原则(Liskov SubStitution Principle LSP):任何基类可以出现的地方,子类一定可以出现。
3.依赖倒转原则(Dependence Inversion Principle):对接口编程,依赖抽象而不依赖具体。
4.接口隔离原则(Interface Segregation Prianciple):使用多个隔离接口,比使用单个接口好。细粒度,高内聚,低耦合。
5.迪米特法则(Demeter Principle):一个实体应尽量少的与其他实体之间发生相互作用,使得系统模块之间相互独立。
6.合成复用原则(Composite Reuse Principle):尽量使用合成/聚合的方式,而不是使用继承。
二.模式简介
总体分为三大模块:
创建型模式(5种):工厂方法模式(Factory Methon),抽象工厂模式(Abstract Factory),单例模式(Singleton),建造者模式(Builder),原型模式(Prototype);
工厂方法模式:普通工厂,多工厂,静态工厂
单例模式:要注意多线程之间的争夺资源及加锁之后的性能问题。
方案一(利用内部类):
public class Singleton{
//私有化构造方法
private Singleton(){
}
//使用一个内部类来维护单例
private static class SingletonFactory{
prive static Singleton instance = new Singleton();
}
//获取实例
public static Singleton getInstance(){
return SingleFactory.instance;
}
//如果该对象被用于序列化,可以保证对象在序列化前后保持一致
public Object readResolve(){
return getInstance();
}
}
方案二:
public class SingletonTest{
private static SingletonTest instance = null;
private Vector properties = null;
private SingletonTest(){}
private static synchronized void syncInit(){
if(instance == null) instance = new SingletonTest();
}
public static SingletonTest getInstance(){
if(instance == null) syncInit();
return instance;
}
public void updateProperties() {
SingletonTest shadow = new SingletonTest();
properties = shadow.getProperties();
}
}
结构型模式(7种):(类,对象,接口)适配器模式(Adapter),装饰器模式(Decorator),代理模式(Proxy),外观模式(Facade),桥接模式(Bridge),组合模式(Composite),享元模式(Flyweight);
行为型模式(11种):策略模式(Strategy),模板模式(Template Meyhon),观察者模式(Observer),迭代器模式(Iterator),责任链模式(Chain of Responsibility),命令模式(Command),备忘录模式(Memento),状态模式(State),访问者模式(Visitor),中介者模式(Mediator),解释器模式(Interpreter)。
其实还有两类:并发型模式和线程池模式,用图片来整体描述一下: