JAVA设计模式---工厂模式理解

前言

多年的java经验,说句实话并没有刻意的去看设计模式相关的东西,但是设计模式相关的应用就在实际应用中,比如hibernate中connection的获取,根据不同的properties的配置内容,不同的参数,从而获取不同的connection,并且调用connection相关方法对DB进行操作。这就是一个工厂模式的场景。看了很多工厂模式的帖子,大部分都是奔驰,宝马[笑CRY]。不讲太多,只说一下自己对于工厂模式的理解,或许只是一小部分,毕竟没有应用到实处,欢迎拍砖。

工厂模式的特点

1-多态的表现,解耦的表现
2-便于维护,增强代码逻辑的可扩展性,统一了逻辑,减少了逻辑应用代码中new实例的操作
3-“工厂生产的具体产品”维护添加时,需要对工厂模式设计做出相应的逻辑变更

案例阐述

标准为:不同键盘厂商的click,共同的操作为click,区别为不同的键盘品牌,在实际逻辑应用中,需要new不同的键盘实例,在更新维护中更是需要维护相应的逻辑。本文以魔力鸭和cherry两种键盘品牌,同一种click操作来简单阐述博主对于工厂模式的理解

案例代码

//共同的产品,键盘接口
public interface Keyboard {
    //共同的点击操作click
    public void click();
}


//cherry键盘实现类
public class CheeryKeyboard implements Keyboard {
    //cherry键盘实现方法
    @Override
    public void click() {
        System.out.println("this is cheery keyboard click...");
    }
}

//魔力鸭实现类
public class DuckyKeyboard implements Keyboard {
    @Override
    public void click() {
        System.out.println("this is ducky keyboard click...");
    }
}

//简单的工厂类实现
public class KeyBoardFactory {
    public static Keyboard KeyboardInstance(String brandName){
        if(brandName.equals("cheery")){   //获取cheery键盘
            CheeryKeyboard cheeryKeyboard = new CheeryKeyboard();
            return cheeryKeyboard;
        }else if(brandName.equals("ducky")){
            DuckyKeyboard duckyKeyboard = new DuckyKeyboard();
            return duckyKeyboard;
        }
        return null;
    }
    public static void main(String[] args) {
        Keyboard cheerykey = KeyBoardFactory.KeyboardInstance("cheery");
        cheerykey.click();
    }
}

应用场景

统一的标准,不同的具体实现,公用模块性强,需要维护性强的类

猜你喜欢

转载自blog.csdn.net/zhang6622056/article/details/52608099