zoukankan      html  css  js  c++  java
  • 笔记:设计模式

        设计面向对象软件比较困难,而设计可复用的面向对象软件就更加困难了。因为你必须找到相关的对象,以适当的粒度将他们归类,再定义类的接口和继承层次,建立对象之间的基本关系。

        一般有经验的面向对象的设计者都知道:不死解决任何问题都要从头做起。他们更愿意复用以前使用过得解决方案。当找到一个好的解决方案,他们会一遍又一遍的去使用,这些就慢慢的变成了他们的经验。这样就形成了一种模式。
        设计模式其实将一种面向对象软件的设计经验记录下来。设计模式可以简单方便地复用成功的设计和体系结构。
        软件模式设计的原则:高内聚  低耦合
                高内聚:
                        内聚(聚合):意味着一个对象拥有另一个对象或对另一个对象负责。一般称一个对象包含另一个对象或者是另一个对象的一部分。也意味着聚合对象和其所有者具有相同的生命周期。
                低耦合:
                        耦合(相识):意味着一个对象仅仅知道另一个对象。有时相识也被称为“关联”或“引用“的关系。耦合的对象可能请求彼此的操作,但它们不为对方负责。耦合是一种比聚合要弱的关系,它只标识了对象间较松散的耦合关系。
                
                以上可以看到聚合和耦合的差别以及它们在编译和运行时刻的标识是多么不同。
     
    最近学到的设计模式:
     
    MVC设计模式
        类的模型/视图/控制器(Model/View/Controller)三元组(MVC)被用来构建用户界面。
        MVC包括三类对象。模型Model是应用对象,视图View是它在屏幕上的表示,控制器Controller定义用户界面对用户输入的响应方式。不使用MVC,用户界面设计往往将这些对象混在一起,而MVC则将它们分离以提高灵活性和复用性。
     
     
    单例模式
        它是java中常见的单例模式,单例模式分为三种:懒汉式、饿汉式和登记式
        特点:
                a.单例类只能有一个实例对象
                b.单例类必须自己创建自己唯一的实例
                c.单例类必须给所有其他对象提供这一实例
        即:单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。因此单例模式为面向对象的应用程序提供了对象唯一的访问点,不管它实现何种功能,整个应用程序都活共享一个实例对象。
     
    工厂模式    
        1、简单工厂模式    
        2、工厂抽象模式
     
     
       3、工厂方法模式
        就是定义一个创建产品对象的工厂接口,让子类决定实例化哪种实例对象,也就是将实际创建实例对象的工作推迟到子类当中,核心工厂类不再负责具体产品的创建。
        工厂方法模式是对简单工厂模式进行了抽象,如此一来核心类成为了一个抽象工厂的角色,仅仅负责具体工厂子类必须实现的接口,这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的产品。工厂方法模式完全实现了 ”开-闭“ 原则(对扩展开放,对修改关闭)在不影响现有软件结构的基础上实现了扩展,可应用于更复杂 的层次结构和产品结果复杂的场合。
     
    工厂模式补充:
                    设计原则:
                            a.    ”开-闭“原则
                                    一个软件实体应对扩展开放,对修改关闭。我们在设计软件模块的时候应该是这个模块可以在不被修改的前提下被扩展。
                            b.    依赖倒置原则
                                    不论工厂还是产品都应该依赖于抽象,而不是具体的实现类。
     
     
     
     
     
     
     
     
     
     
     
     
     
     





  • 相关阅读:
    HDU 2544 最短路
    Codeforces Round #588 (Div. 2) D. Marcin and Training Camp
    Codeforces Round #590 (Div. 3) B2. Social Network (hard version)
    Codeforces Round #585 (Div. 2) B. The Number of Products
    MongoDB基本概念
    MongoDB基本命令
    MongoDB常见问题
    MongoDB副本集
    Zookeeper Java 客户端
    MongoDB安装
  • 原文地址:https://www.cnblogs.com/istarry/p/ba4009d9a4f4355f22a4d621b266bf63.html
Copyright © 2011-2022 走看看