设计模式,更新中...
- 总览
- 1、创建型模式
- 2、结构型模式
- 3、行为型模式
-
- 3.1、※责任链模式(Chain of Responsibility Pattern)
- 3.2、命令模式(Command Pattern)
- 3.3、解释器模式(Interpreter Pattern)
- 3.4、迭代器模式(Iterator Pattern)
- 3.5、中介者模式(Mediator Pattern)
- 3.6、备忘录模式(Memento Pattern)
- 3.7、※观察者模式(Observer Pattern)
- 3.8、状态模式(State Pattern)
- 3.9、空对象模式(Null Object Pattern)
- 3.10、策略模式(Strategy Pattern)
- 3.11、※模板模式(Template Pattern)
- 3.12、访问者模式(Visitor Pattern)
总览
总共有 23 种设计模式。这些模式可以分为三大类:创建型模式(Creational Patterns)、结构型模式(Structural Patterns)、行为型模式(Behavioral Patterns)。
1、创建型模式
1.1、※工厂模式(Factory Pattern)Spring中大量使用
在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。
优点: 1、一个调用者想创建一个对象,只要知道其名称就可以了。 2、扩展性高,如果想增加一个产品,只要扩展一个工厂类就可以。 3、屏蔽产品的具体实现,调用者只关心产品的接口。
缺点:每次增加一个产品时,都需要增加一个具体类和对象实现工厂,使得系统中类的个数成倍增加,在一定程度上增加了系统的复杂度,同时也增加了系统具体类的依赖。这并不是什么好事。
实现:1、一个抽象接口Shape
;2、若干实现了抽象接口的实体类Square
, Circle
;3、一个工厂类ShapeFactory
包含创建实体类的方法 getShape()
;4、一个Demo
使用工厂类创建实体对象并执行对应方法
//1、一个抽象接口`Shape`;
public interface Shape {
void draw();
}
//2、若干实现了抽象接口的实体类`Square`, `Circle`;
class Circle implements Shape{
@Override
public void draw() {
System.out.println("画一个圆");
}
}
class Square implements Shape{
@Override
public void draw() {
System.out.println("画一个方");
}
}
//3、一个工厂类`ShapeFactory`包含创建实体类的方法 `getShape()`;
class ShapeFactory {
//使用 getShape 方法获取形状类型的对象
public Shape getShape(String type){
if(type == null){
return null;
}
if("circle".equals(type)){
return new Circle();
} else if ("square".equals(type)) {
return new Square();
}else{
return null;
}
}
}
//4、一个Demo使用工厂类创建实体对象并执行对应方法
public class Demo {
public static void main(String[] args) {
ShapeFactory shapeFactory = new ShapeFactory();
//获取 Circle 的对象,并调用它的 draw 方法
Shape circle = shapeFactory.getShape("circle");
circle.draw();
//获取 Square 的对象,并调用它的 draw 方法
Shape square = shapeFactory.getShape("square");
square.