老师在上课是像我们详细介绍了几种设计模式,但对于为什么采用设计模式提到的却比较少,使得在做实验时有时候会很疑惑为什么要这么写,这么写难道不更复杂吗?了解设计模式的作用及优缺点会更有益与对设计模式的选用。本文介绍的有工厂模式,适配器模式,装饰器模式,策略模式,观察者模式以及访问者模式。

工厂模式

javabean是设计模式吗 java设计模式作用_工厂模式


意图:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。

优点: 1:工厂模式是为了解耦:把对象的创建和使用的过程分开。就是Class A 想调用 Class B ,那么A只是调用B的方法,而至于B的实例化,就交给工厂类。2:一个调用者想创建一个对象,只要知道其名称就可以了:,而不需要了解具体的实现。

适配器模式

javabean是设计模式吗 java设计模式作用_设计模式_02


意图:使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

优点:1:可以让任何两个没有关联的类一起运行。 2:提高了类的复用。

缺点:由于 JAVA 至多继承一个类,所以至多只能适配一个适配者类,而且目标类必须是抽象类。

装饰器模式

javabean是设计模式吗 java设计模式作用_子类_03


意图:动态地给一个对象添加一些额外的功能。

优点:装饰模式是继承的一个替代模式,装饰类和被装饰类可以独立发展,不会相互耦合。

缺点:多层装饰会很复杂,会写一句很长的代码。

策略模式

javabean是设计模式吗 java设计模式作用_工厂模式_04


意图:使得一系列作用相同的方法可相互替换。

优点: 1:算法可以自由切换。2:扩展性良好。

缺点: 1:策略类会增多。 2:所有策略类都需要对外暴露。

观察者模式

javabean是设计模式吗 java设计模式作用_工厂模式_05


意图:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。

优点: 1:观察者和被观察者是抽象耦合的。 2:建立一套触发机制。

缺点: 如果一个被观察者对象有很多的直接和间接的观察者的话,将所有的观察者都通知到会花费很多时间。

访问者模式

javabean是设计模式吗 java设计模式作用_工厂模式_06


意图:将数据结构与数据操作分离。例如用一笔钱去买书和菜,书的价格是每本多少钱,菜是每斤多少钱,二者的计算方法并不一样。

优点: 1:符合单一职责原则。 2:优秀的扩展性。 3:灵活性。

缺点: 1:具体元素对访问者公布细节,违反了迪米特原则。 2:具体元素变更比较困难。