zoukankan      html  css  js  c++  java
  • 设计模式-常用之一

    一.工厂模式

    定义: Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。

    在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。

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

    个人理解:普通工厂模式相当于一个专卖品商店,提供一种类产品的创建,你想要的产品,商店就会提供给你。例如:这是一个面包专卖店,

    那么你只能在这里买到面包,你只需要给商店打一声招呼,老板来一块面包,你就会得到你想要的面包(类对象),如果你想买到其他的产

    品,商店就需要扩展业务,比如引进牛奶,饮料之类的,

    但是扩展业务会带来相应的负担。

    官方配图:

    代码演示:

    1.Bread接口

    2.定义红色面包类,并实现Bread接口

    3.定义黑色面包类,并实现Bread接口

    4.定义工厂类,BreadFactory

    5.实例化工厂类,并选着要被制造出来的类

    二.抽象工厂模式

    定义:是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。

    在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。

    用途:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。

    个人理解:一个超级工厂,可以创建其他的工厂,换句话说,就是我可以有一个卖面包的店,然后还有一个卖饮品的店,他们都属于我,你想要饮料还是面包,

    我都可以提供给你。抽象类工厂就是这样的作用。

    官方配图:

     

     代码实现:在已经有一个面包工厂的情况下,我再添加了一个Shape工厂,具体实现就不再描述了

    1.创建抽象工厂类

    2.让Bread工厂和Shape分别继承抽象工厂类

    3.创建工厂生成器类

    4.应用

    三.观察者模式

    定义:当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知它的依赖对象。观察者模式属于行为型模式。

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

    个人理解:观察者模式有点像学校里的播报员,当他从领导那里得到通知的时候,他就会通过广播的方式来通知同学们,观察者就是这样的行为模式,其中领导就是被观察的

    对象,而同学们就是当被观察对象作出动作时通知的对象。

    官方配图:

    代码实现:

    1.创建带有绑定观察者到 Client 对象和从 Client 对象解绑观察者的方法的Subject类

    2.创建 Observer 类

    3.创建实体观察者类

    4.使用 Subject 和实体观察者对象。

    5.结果:

    四.单例模式

    定义:是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。

    这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。

    用途:保证一个类仅有一个实例,并提供一个访问它的全局访问点

    个人理解:在java知音的解读中,把单例模式的唯一创建对象比作god,这个比喻是很贴切的,没有人能够创造god。单例从字面上来讲,就是只有一个实例,所有的访问都会经过他。

    官方配图:

    代码实现:

  • 相关阅读:
    ASP.NET MVC中三方登录: 微软、谷歌、Office365
    ComponentOne Xuni助力Xamarin开发者突破百万,快速开发Android、IOS Apps
    深入浅出OOP(四): 多态和继承(抽象类)
    挑灯熬夜看《Build 2015 Keynote》图文笔记
    深入浅出OOP(三): 多态和继承(动态绑定/运行时多态)
    PHP 开发社区微信服务号实战图解
    年卡在手,城墙我走: 记葡萄城控件团队建设
    深入浅出OOP(二): 多态和继承(继承)
    Windows 10 技术预览
    深入浅出OOP(一): 多态和继承(早期绑定/编译时多态)
  • 原文地址:https://www.cnblogs.com/SoftwareBuilding/p/11139885.html
Copyright © 2011-2022 走看看