Java设计模式复习与分类:实例与应用场景详解

需积分: 31 14 下载量 57 浏览量 更新于2024-07-21 1 收藏 160KB DOC 举报
Java设计模式复习指南 在Java编程中,设计模式是一种通用的最佳实践,帮助开发者解决常见问题并优化代码结构。本文主要涉及以下几个关键概念: 1. 工厂系列模式: - 优点:工厂模式实现了用户代码与特定类子类解耦,用户只需关注对象的行为,无需关心其创建过程。抽象工厂模式在此基础上扩展,可以创建一系列相关对象,进一步增强解耦。 - 缺点:过多的工厂类可能会导致系统复杂性增加,不易维护。 2. MVC模式: - MVC不是设计模式,而是一种架构或框架模式,因为它强调的是应用架构的组织方式,而不是具体的实现细节。它通常由模型(Model)、视图(View)和控制器(Controller)三个组件组成,用于分离数据表示、数据管理和用户界面。 3. 装饰者模式: - 生活中的例子:“人在衣着马在鞍”体现了装饰者模式,其中人和衣服分别对应ConcreteComponent和ConcreteDecorator,通过装饰来增强对象的功能或外观。 4. 设计模式分类: - 创建型模式:如工厂方法、抽象工厂、单例等,关注对象的创建过程,减少直接使用`new`操作。 - 行为型模式:如策略、观察者、命令等,关注对象间的交互和行为变化。 - 结构型模式:如适配器、桥接、组合等,处理类或对象的组合,改变系统结构以适应需求。 5. Javajdk中的设计模式应用: - 提供了多种设计模式的实现,如单例、工厂方法、抽象工厂、装饰器、代理等,这些都是在框架和库设计中常见的模式。 6. 面向对象设计原则: - 开闭原则:对扩展开放,对修改关闭。 - 抽象原则(依赖倒转):降低类间的耦合,提高灵活性。 - 组合/聚合优于继承:尽量通过组合实现功能复用,减少继承层次。 - 高内聚,低耦合:保持类内部紧密联系,外部尽量减少相互影响。 7. 观察者模式: - 推拉区别:推模式下,主题主动通知观察者,拉模式则由观察者请求更新。 - 使用场景:推模式适合主题知道观察者需要变化的情况,拉模式适合主题不确定观察者需求时。 8. 策略模式与工厂模式: - 策略模式关注算法的可替换性,工厂模式关注对象的创建。 9. 观察者模式推拉的适用场景: - 推模式适用于主题能主动控制通知的场景,拉模式则适用于不确定观察者需求,或者需要观察者自行决定何时获取更新。 这些设计模式在实际开发中起着至关重要的作用,熟练掌握它们可以帮助开发者编写出结构清晰、易于维护的高质量代码。通过理解并灵活运用这些模式,可以提升代码的复用性、可扩展性和可维护性。
2023-05-29 上传
工厂系列模式的优缺点: 让用户的代码和某个特定类的子类的代码解耦 用户不必知道它所使用的对象是怎样创建的,只需知道该对象有哪些方法 抽象工厂模式可以为用户创建一系列相关的对象,使用户和创建这些对象的类脱耦 MVC模式是不是一种设计模式?为什么 MVC不是设计模式,应该是框架/架构模式,因为它的定义是抽象的,没有足够的细节描 述使你直接去实现,而只能根据MVC的概念和思想,用几个设计模式组合实现。 举出一个生活中使用装饰者模式的例子,用程序实现思路 举个生活中的例子,俗话说"人在衣着马在鞍",把这就话用装饰者模式的语境翻译一下 ,"人通过漂亮的衣服装饰后,男人变帅了,女人变漂亮了;"。对应 上面的类图,这里人对应于ConcreteComponent,而漂亮衣服则对应于ConcreteDecorato r; 设计模式如何分类,每一个类别都有什么特征? 设计模式分为3类,分别是:创建型模式、行为型模式、结构型模式。 创建型特点:避免用户直接使用new运算符创建对象。 行为型特点:怎样合理的设计对象之间的交互通信,以及怎样合理的为对象分配职 结构型特点:主要用于处理类或对象的组合 Java jdk中使用了哪些设计模式 1.单例2.静态工厂3.工厂方法4.抽象工厂5.构造者6.原型7.适配器8桥接9.组合10.装 饰器11.外观12.享元14.代理15.迭代器16.观察者17.协调者18.模板方法19.策略20.责 任链21.命令22.空对象25.解释器 面向对象的设计原则有哪些? 开闭原则、面向抽象的原则(依赖倒转原则)、多用组合少用继承原则、高内聚- 低耦合原则。 观察者模式的推拉有什么不同?使用场景 推,具体主题将变化后的数据全部交给具体观察者。场景:当具体主题认为具体观察者 需要这些变换后的数据时,往往采用推数据方式; 拉,具体主题不将变化后的数据交给具体观察者,而是提供获得这些数据的方法。场景 :当具体主题不知道具体观察者是否需要这些变换后的数据时,往往采用拉数据的方式 。 策略模式和工厂模式有什么不同? 策略模式定义了一系列算法,将他们一个个封装,并且他们之间可以相互替换; 工厂模式定义一个创建对象的接口,让子类决定实例化哪一个类 5观察者模式的推拉有什么不同?适用场景 现在要说的分歧在这里: "推"的方式是指,Subject维护一份观察者的列表,每当有更新发生,Subject会把更新 消息主动推送到各个Observer去。 "拉"的方式是指,各个Observer维护各自所关心的Subject列表,自行决定在合适的时间 去Subject获取相应的更新数据。 "推"的好处包括: 1、高效。如果没有更新发生,不会有任何更新消息推送的动作,即每次消息推送都发生 在确确实实的更新事件之后,都是有意义的。 2、实时。事件发生后的第一时间即可触发通知操作。 3、可以由Subject确立通知的时间,可以避开一些繁忙时间。 4、可以表达出不同事件发生的先后顺序。 缺点:精确性较差,不能保证能把信息送到客户器。 "拉"的好处包括: 1、如果观察者众多,Subject来维护订阅者的列表,可能困难,或者臃肿,把订阅关系 解脱到Observer去完成。 2、Observer可以不理会它不关心的变更事件,只需要去获取自己感兴趣的事件即可。 3、Observer可以自行决定获取更新事件的时间。 4、拉的形式可以让Subject更好地控制各个Observer每次查询更新的访问权限。缺点: 不能够及时获取系统的变更。 6策略模式和工厂模式有什么不同? 一般情况下,策略模式是为了解决的是策略的切换与扩展,更简洁的说是定义策略族, 分别封装起来,让他们之间可以相互替换,策略模式让策略的变化独立于使用策略的客 户。可以应用的场景有优惠系统、工资计算系统等。而工厂模式主要解决的是资源的统 一分发,将对象的创建完全独立出来,让对象的创建和具体的使用客户无关。主要应用 在多数据库选择,类库文件加载等。很明显的是策略模式是开放的,作为一个主体你的 活动范围是全程的,大多数事情要你自己亲力亲为。而工厂模式作是封闭的,作为主体 的你的活动范围是有限的,很多事情都帮组你做好了,你直接"点"就可以了。 7装饰者模式和适配器模式的比较 1.关于新职责:适配器也可以在转换时增加新的职责,但主要目的不在此。装饰者模 式主要是给被装饰者增加新职责的。 2.关于原接口:适配器模式是用新接口来调用原接口,原接口对新系统是不可见或者 说不可用的。装饰者模式原封不动的使用原接口,系统对装饰的对象也通过原接口来完 成使用。(增加新接口的装饰者模式可以认为是其变种--"半透明"装饰者) 3.关于其包裹的对象:适配器是知道被适配者的详细情况的(就是那个类或那个接口 )。装饰者只知道其接口是什么,至于