设计模式

一共23种设计模式,三种类型模式:创建型模式(5),结构型模式(7),行为型模式(11)。

创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。

结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。

行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

设计模式的七大原则:

●开闭原则:对扩展开发,对修改关闭

●单一职责原则:一个类只负责一个功能领域的相应职责

●里氏代换原则:所有引用基类的地方必须能透明地使用其子类的对象

●依赖倒转原则:依赖于抽象,不能依赖于具体实现

●接口隔离原则:类之间的依赖关系应该建立在最小的接口上

●合成/聚合复用原则:尽量使用合成/聚合,而不是通过继承达到复用的目的

●迪米特原则:一个软件实体应该尽可能少的与其他实体发生相互作用

创建型模式

1.工厂模式:

1.1 简单工厂模式:

定义: 定义了一个创建对象的类,由这个类来封装实例化对象的行为。

1
2
3
4
5
6
7
8
9
10
11
12
13
public class SimplePizzaFactory {
public Pizza CreatePizza(String ordertype) {
Pizza pizza = null;
if (ordertype.equals("cheese")) {
pizza = new CheesePizza();
} else if (ordertype.equals("greek")) {
pizza = new GreekPizza();
} else if (ordertype.equals("pepper")) {
pizza = new PepperPizza();
}
return pizza;
}
}

简单工厂存在的问题与解决方法: 简单工厂模式有一个问题就是,类的创建依赖工厂类,也就是说,如果想要拓展程序,必须对工厂类进行修改,这违背了开闭原则,所以,从设计角度考虑,有一定的问题,如何解决?我们可以定义一个创建对象的抽象方法并创建多个不同的工厂类实现该抽象方法,这样一旦需要增加新的功能,直接增加新的工厂类就可以了,不需要修改之前的代码。这种方法也就是我们接下来要说的工厂方法模式

1.2 工厂方法模式:

定义: 定义了一个创建对象的抽象方法,由子类决定要实例化的类。工厂方法模式将对象的实例化推迟到子类。