绪论
其实很早以前就看过一些关于设计模式的文章,知道这个很重要,为此还写了一些demo,但是在实际开发过程中基本没有使用过。原因:不习惯,不记得,其实更多的是不明白什么情况下可以使用。所以导致自己的代码又臭又长,还会重复的造一些轮子,使代码看起来毫无亮点。
这次学习设计模式,更多的是分析理解,思考以往编程中哪些地方可以用到这些模式,从而可以使以后的自己在开发相同模块时可以使用。
理解
- 结构型模式。
- 主要作用:是在新接口和老接口之间进行适配。
- 优点:解耦、增加类的透明性和复用性、是把2个不同的东西转换到可以正常使用,适配器是去迎合目标对象与源对象。
- 过多使用,会让系统变得凌乱。
- 适配器不是在详细设计时添加的,而是解决正在服役的项目的问题。
代码
Computer.java
public interface Computer {
void readSD(SDCard sd);
}
LegionComputer.java
public class LegionComputer implements Computer {
@Override
public void readSD(SDCard sd) {
if (sd == null) {
throw new NullPointerException("sd card is null");
}
sd.readSD();
}
}
SDCard.java
public interface SDCard {
void readSD();
}
SDCardImpl.java
public class SDCardImpl implements SDCard {
@Override
public void readSD() {
System.out.println("读SD卡:哈哈");
}
}
TFAdapterSD.java
public class TFAdapterSD implements SDCard {
private TFCard tf;
public TFAdapterSD(TFCard tf) {
this.tf = tf;
}
@Override
public void readSD() {
System.out.println("转换");
tf.readTF();
}
}
TFCard.java
public interface TFCard {
void readTF();
}
TFCardImpl.java
public class TFCardImpl implements TFCard {
@Override
public void readTF() {
System.out.println("读TF卡:嘿嘿");
}
}
Main.java
public class Main {
public static void main(String[] args) {
Computer computer = new LegionComputer();
SDCard sd = new SDCardImpl();
computer.readSD(sd);
TFCard tf = new TFCardImpl();
SDCard tfToSD = new TFAdapterSD(tf);
computer.readSD(tfToSD);
}
}
结果
上面例子就是说笔记本可以直接读取SD卡,还可以通过读卡器读取TF卡。
(若有什么错误,请留言指正,3Q)