软件设计模式——工厂模式

一、定义

工厂模式是为了解决简单工厂模式中,工厂判断方法的日渐复杂而衍生出来的模式。如果后面需要创建的“产品”越来越多,那么这个简单工厂类会包含越来越多的if-else判断类。这样维护起来会非常的麻烦。同样也违反了开闭原则。

二、设计类图

工厂模式也就是鼠标工厂是个父类,有生产鼠标这个接口。戴尔鼠标工厂,惠普鼠标工厂继承它,可以分别生产戴尔鼠标,惠普鼠标。生产哪种鼠标不再由参数决定,而是创建鼠标工厂时,由戴尔鼠标工厂创建。后续直接调用鼠标工厂.生产鼠标()即可。

三、代码实现

鼠标的创建接口: 

public interface Mouse {

    void sayHi();

}
public class HaierMouse implements Mouse {

    @Override
    public void sayHi() {
        System.out.println("Haier Mouse Say Hi");
    }
}
public class HisenseMouse implements Mouse {

    @Override
    public void sayHi() {
        System.out.println("Hisnese Mouse Say Hi.");
    }
}

创建鼠标的工厂: 

public abstract class MouseFactory {
    public abstract Mouse createMouse();
}

海尔的鼠标工厂:

public class HaierMouseFactory extends MouseFactory {

    @Override
    public Mouse createMouse() {
        return new HaierMouse();
    }
}

海信的鼠标工厂:

public class HisenseMouseFactory extends MouseFactory {

    @Override
    public Mouse createMouse() {
        return new HisenseMouse();
    }
}

这里是关键,实例化的动作又从工厂类中转义到了客户端实现,直接鼠标工厂.创建鼠标

public class Main {
    public static void main(String[] args) {
        //创建一个海尔的鼠标
        MouseFactory mouseFactory = new HaierMouseFactory();
        mouseFactory.createMouse().sayHi();

        //创建一个海信的鼠标
        MouseFactory mouseFactory2 = new HisenseMouseFactory();
        mouseFactory2.createMouse().sayHi();
    }
}

执行结果:

Haier Mouse Say Hi
Hisnese Mouse Say Hi.

Process finished with exit code 0

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章