前言
多年的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();
}
}
应用场景
统一的标准,不同的具体实现,公用模块性强,需要维护性强的类