什么是设计模式?
设计模式(Design Pattern)是前辈们对代码开发经验的总结,是解决特定问题的一系列套路。它不是语法规定,而是一套用来提高代码可复用性、可维护性、可读性、稳健性以及安全性的解决方案。设计模式一共有23种,这 23 种设计模式的本质是面向对象设计原则的实际运用,是对类的封装性、继承性和多态性,以及类的关联关系和组合关系的充分理解
23种设计模式
分为三大类
创建型模式:工厂方法模式(Factory Method)抽象工厂模式(Abstract Factory)单例模式(Singleton)建造者模式(Builder)原型模式(Prototype)
在创建对象的同时隐藏创建逻辑,不使⽤ new 直接实例化对象,程序在判断需要创建哪些对象时更灵活
结构型模式:适配器模式(Adapter)装饰器模式(Decorator)代理模式(Proxy)外观模式(Facade)桥接模式(Bridge)组合模式(Composite)享元模式(Flyweight)
通过类和接⼝间的继承和引⽤实现创建复杂结构的对象
行为型模式:策略模式(Strategy)模板方法模式(Template Method)观察者模式(Observer)迭代器模式(Iterator)责任链模式(Chain of Responsibility)命令模式(Command)备忘录模式(Memento)状态模式(State)访问者模式(Visitor)中介者模式(Mediator)解释器模式(Interpreter)
通过类之间不同通信方式实现不同行为
设计模式的原则
设计模式的原则有依赖导致原则、单一职责原则、接口隔离原则、开闭原则、迪米特法原则、里氏替换原则
简单工厂模式
简单工厂模式指由⼀个工厂对象来创建实例,客户端不需要关注创建逻辑,只需提供传⼊工厂的参数
适⽤于工厂类负责创建对象较少的情况,缺点是如果要增加新产品,就需要修改工厂类的判断逻辑,违背开闭原则,且产品多的话会使工厂类⽐较复杂
Calendar 抽象类的⽇历对象。方法,调⽤方法根据不同的地区参数创建不同的Spring 中的 BeanFactory 使⽤简单工厂模式,根据传⼊⼀个唯⼀的标识来获得 Bean 对象
实例演示
/**
* 拿铁、美式咖啡、卡布奇诺等均为咖啡家族的一种产品
* 咖啡则作为一种抽象概念
* @author
*/
public abstract class Coffee {
/**
* 获取coffee名称
* @return
*/
public abstract String getName();
}
/**
* 美式咖啡
* @author
*
*/
public class Americano extends Coffee {
@Override
public String getName() {
return "美式咖啡";
}
}
/**
* 卡布奇诺
* @author
*/
public class Cappuccino extends Coffee {
@Override
public String getName() {
return "卡布奇诺";
}
}
/**
* 拿铁
* @author
*/
public class Latte extends Coffee {
@Override
public String getName() {
return "拿铁";
}
}
工厂方法模式
工厂方法模式指定义⼀个创建对象的接⼝,让接⼝的实现类决定创建哪种对象,让类的实例化推迟到⼦类中进行。
客户端只需关⼼对应工厂而无需关⼼创建细节,主要解决了产品扩展的问题,在简单⼯⼚模式中如果产品种类变多,工厂的职责会越来越多,不便于维护。<