目录
前言
设计模式(Design pattern)代表了最佳的实践,是软件开发人员在软件开发过程中面临的一般问题的解决方案。通常根据设计模式所解决的问题性质的不同,将其划分为三大类:创建型、结构型、行为型。
具体包括:
创建型:简单工厂模式、工厂方法模式、抽象工厂模式、单例模式、原型模式、建造者模式。
结构型:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。
行为型:模版方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、职责链模式、访问者模式。
其中创建型模式主要给出对象创建时所面临的问题的普适性解决方案,主要特点是将对象的创建过程与调用过程进行分离。
一、简单工厂模式
定义
简单工厂模式就是将对象的创建过程和调用过程分离开,定义一个专门的类来创建其他实体类的对象。一个工厂通常负责创建一部分具有相同或相似特点的实体类,因此通常把这些实体类向上抽象形成抽象类或接口。从而方便在工厂类进行创建实体类对象时进行接收。
角色
- 具体工厂:负责创建自己所负责的某一部分类的实例,通常将创建方法定义为静态,可以在全局状态下不需要创建工厂实例就能创建所需的实例。
- 抽象实体类:一部分具有相同或相似特点的实体类的抽象,抽象类或者接口。
- 具体实体类:需要被创建实例的实体类,继承抽象实体类或实现其接口。
特点
- 优点:直接根据工厂去创建相应的实体类实例,不需要了解该实体类的创建过程及其相关组织,优化了软件体系结构。
- 缺点:高内聚,当实体类增加时,需要去修改工厂类的内部结构,容易在修改过程中出现错误。
实现
/**
* 简单工厂模式
*/
public class FactoryMode {
public static void main(String[] args) throws InstantiationException, IllegalAccessException {
Fruit apple = FruitFactory.get("apple");
Fruit banana = FruitFactory.get("banana");
apple.get();
banana.get();
}
}
/**
* 抽象实体接口
*/
interface Fruit{
public void get();
}
/**
* 具体实体类
*/
class Apple implements Fruit{
public void get(){
System.out.println("采集苹果");
}
}
/**
* 具体实体类
*/
class Banana implements Fruit{
public void get(){
System.out.println("采