zoukankan      html  css  js  c++  java
  • 关于设计模式的一些理解和感悟

    Gof设计模式中,对设计模式的主要分类为:
    1)创建型、2)结构型、3)行为型
    创建型设计模式抽象了对象的实例化过程;(创建与实例化解耦)
    结构型设计模式涉及到如何组合类和对象以获得更大的结构
    行为型设计模式描述如何控制执行的流转以及对象间如何交互

    1: 简单工厂和策略模式: 简单的多态应用(Model+Factory)

    2:装饰模式:通过父类将子类串在一起。客户端向父类传入子类对象,调用其方法

    3:工厂方法:把对象的创建封装到工厂的方法,减少了与客户端的耦合

    4: 原形模式:浅复制:直接实现clonable接口, 深复制:先复制对象,再执行浅复制

    5: 模板模式:把共有的东西都抽象的父类,子类通过继续方法来达到不同的实现

    6:外观模式:如果每个 子系统 需要统一做一件事的时候,可以通过抽象出一个公用操作接口统一操作

    7:建造者模式:将对象的创建和生产分离开

    8:观察者模式跟回调:不同对象有不同实现,可以通过抽象出接口或者抽象类,在实例化的时候编写自己的逻辑。

    9: 抽象工厂模式和反射:还是依赖于抽象接口。而反射,简单的来说是 根据字符串来动态生成对象

    10:状态模式:消除switch和if的,主要根据传入的对象的属性来判断应该生成哪些方法(不太懂)

    总结:
    1: 类的职责单一,只要完成好自己的事;
    2: 两者的联系依赖于抽象,不依赖具体
    3: 抽象,封装,继承,多态

    抽象类和接口的差别:
    抽象类用于部分实现一个类,再由用户按需求对其进行不同的扩展和完善;接口只是定义一个行为的规范或规定。
    抽象类在组件的所有实现间提供通用的已实现功能;接口创建在大范围全异对象间使用的功能。
    抽象类主要用于关系密切的对象;而接口适合为不相关的类提供通用功能。
    抽象类主要用于设计大的功能单元;而接口用于设计小而简练的功能块。

    例如:
    Window窗体可以用抽象类来设计,可以把公有操作和属性放到一个抽象类里,让窗体和对话框继承自这个抽象类,再根据自己的需求进行扩展和完善。
    打印操作可以作为一个接口提供给每个需要此功能的窗体,因为窗体的内容不同,就要根据他们自己的要求去实现自己的打印功能。打印时只通过接口来调用,
    而不用在乎是那个窗体要打印。

    软件设计的一些原则:

    软件的核心是 模型,不是技术,也不是模式
    软件设计的关键是建立能够表达丰富功能需求的领域模型
    设计的原则:封装变化,让变化不变的部分 分开
    OOP原则:优先实用组合而不是继承;强调面向接口和抽象编程,隐藏了具体实现,减少了耦合
    单一原则:封装,一个类只要负责好他自己的事情就可以了
    开放-封闭原则:(可扩展性)对扩展开放,对修改封闭
    依赖倒转原则:依赖抽象或者接口,不依赖具体的类
    迪米特原则:尽量只跟相关的类做交互(强调类的松耦合)
    Pareto原则: 20%工作需要80%的精力(强调避免过度开发)

    依赖注入(基于抽象耦合的注入):
    (1)构造注入
    (2)setter注入
    (3)接口注入

     

    面向对象和面向过程思想本质的区别(自悟):

    看写程序的代码: 如果看上去是第三者的角度,便是面向对象; 如果是第一者的角度,便是面向过程。对问题的思考的方式也能说明此问题.

     

     

  • 相关阅读:
    Python开发入门与实战3-Django动态页面
    Python开发入门与实战2-第一个Django项目
    Python开发入门与实战1-开发环境
    牛客网剑指offer第12题——数值的整数次方
    再叙快速排序
    牛客网剑指offer第29题——最小的k个数
    牛客网剑指offer第59题——按之字形顺序打印二叉树
    牛客网剑指offer第33题——第N个丑数
    各种特征距离的计算方法及应用
    牛客网剑指offer第24题——二叉树中和为某一值的路径
  • 原文地址:https://www.cnblogs.com/lanxue/p/2621450.html
Copyright © 2011-2022 走看看