首页 > 其他分享 >《大话设计模式》读后感

《大话设计模式》读后感

时间:2024-11-06 17:58:54浏览次数:1  
标签:读后感 对象 子类 大话 模式 一个 接口 抽象类 设计模式

大多数初学者都会有这样的问题,就是碰到问题就直觉地用计算机能够理解的逻辑来描述和表达待解决的问题及具体的求解过程。这其实是用计算机的方式去思考,但这样的思维却使得我们的程序只为满足实现当前的需求,不容易维护,不容易扩展,更不容易复用,从而达不到高质量代码的要求。

面向对象的编程,并不是类越多越好,类的划分是为了封装,但分类的基础是抽象,具有相同属性和功能的对象的抽象集合才是类。

单一职责原则,就一个类而言,应该仅有一个引起它变化的原因。

如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当变化发生时,设计会遭到意想不到的破坏。

面对需求,对程序的改动是通过增加新代码进行的,而不是更改现有的代码,这就是“开放-封闭原则”的精神所在。

说明世间万物都是遵循某种类似的规律,谁先把握了这些规律,谁就最早成为了强者。

里氏代换原则:子类型必须能够替换掉它们的父类型。

程序中所有的依赖关系都是终止于抽象类或者接口,那就是面向对象的设计,反之那就是过程化的设计了。

用了继承,用了抽象类就算是用好了面向对象了吗?

装饰模式,动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。

装饰模式的好处,把类中的装饰功能从类中搬移去除,这样可以简化原有的类,有效地把类的核心职责和装饰功能区分开了,而且可以去除相关类中重复的装饰逻辑。

代理模式,为其他对象提供一种代理以控制对这个对象的访问。

代理模式的几种应用场景:1、远程代理;2、虚拟代理;3、安全代理;4、只能指引。

简单工厂模式的最大优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖。

工厂方法模式,定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法是一个类的实例化延迟到其子类。

原型模式,用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。

MemberwiseClone()方法是这样,如果字段是指类型的,则对该字段执行逐位复制,如果字段是引用类型,则复制引用但不复制引用的对象,因此原始对象及其复本引用同一对象。

Dataset就是典型,有Clone()方法和Copy()方法,对应浅复制和深复制。

模板方法模式是通过把不变行为搬移到超类,去除子类中的重复代码来体现它的优势。

迪米特法则,如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。如果其中一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用。

观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。

“一个程序员如果从来没有熬夜写程序的经历,不能算是一个好程序员,因为他没有痴迷过,所以他不会有大成就。”

两个类所做的事情相同或相似,但是具有不同的接口时要使用它。

DataAdapter就是典型的适配器模式。

IEumerator是.NET框架准备好的非泛型集合的简单迭代接口。

“复制粘贴是最容易的编程,但也是最没有价值的编程。”

单例模式,声明一个静态的类变量,将构造方法私有,外部不能直接实例化,提供一个提供实例的方法。

单例模式和多线程,需要加lock,确保当一个线程位于代码临界区时,另一个线程不进入临界区。如果其他线程试图进入锁定的代码,则它将一直等待,直到该对象被释放。

中介者模式,用一个中介对象来封装一些列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立的改变它们之间的交互。

 

抽象类和接口的区别:

一、类是对对象的抽象;抽象类是对类的抽象;接口是对行为的抽象;

二、如果行为跨越不同类的对象,可使用接口;对于一些相似的类对象,用继承抽象类;

三、抽象类是从子类中发现了公共的东西,泛化出父类,然后子类继承父类,而接口是根本不知子类的存在,方法如何实现还不确认,预先定义。

委托是对函数的封装,可以当作给方法的特种指定一个名称。而事件则是委托的一种特殊形式,当发生有意义的事情时,事件对象处理通知过程。

标签:读后感,对象,子类,大话,模式,一个,接口,抽象类,设计模式
From: https://www.cnblogs.com/dysjwang/p/18530710

相关文章

  • 23设计模式详解
    参考博客https://baijiahao.baidu.com/s?id=1758410771062793648&wfr=spider&for=pc设计模式(Designpattern)"""对软件开发中【普遍存在(反复出现)的问题】,而提出的【解决方案】。每一个设计模式系统地命名、解释和评价了面向对象系统中一个重要和重复出现的设计通过设计......
  • 《图解设计模式》 读后笔记
    设计模式很早前看过,那时候囫囵吞枣,从来没有系统的总结过,因为对于面试而言问的问题总是答的不精确。这次又借助《图解设计模式》复习了一遍,自己写了一篇总结。23种设计模式看起来很多其实大多数在开发中都见到过。甚至有的设计模式对于一个初学者而言即使不知道设计模式也会应......
  • java设计模式之工厂模式
    简单分享下java中设计模式–工厂模式工厂模式(FactoryPattern)是面向对象编程中常用的设计模式之一,它属于创建型模式。工厂模式的主要目的是使用工厂方法来创建对象,而不是直接使用new关键字实例化对象。这样可以提高程序的扩展性和维护性。以下是Java中简单工厂模式的案......
  • 《软技能:代码之外的生存指南》读后感
    你做的每一件事情就是你所做的一切 职业发展的驱动力一定是来自个体本身。记住:工作是属于公司的,而职业生涯却是属于你自己的。只有你开始把自己当作一个企业去思考时,你才能开始做出良好的商业决策。把雇主当作是你的软件开发企业的一个客户,这种诠释雇佣关系的方式可以将你从......
  • 设计模式速览
    设计模式速览前言:资料来源吉大设计模式课程,自用只提取应试回忆关键部分,省略优缺点说明,详细应用之类,扩展挑了常出现的1.概述1.1类间关系1.1.1依赖(dependency):​ 一个类A使用到了另一个类B,而这种使用关系是具有偶然性的、临时性的、非常弱的,但是B类的变化会影响到A。......
  • 大话C++:第27篇 Lambda表达式
    1Lambda表达式介绍在C++中,lambda表达式(也称为闭包)是一种可以定义匿名函数对象的便捷方式。它们能够捕获所在作用域中的局部变量,并且可以在需要函数对象的地方使用。Lambda表达式为C++提供了更简洁、更灵活的函数式编程方式。Lambda表达式的基本语法如下:[capture](parameter......
  • 《图解设计模式》 第九部分 避免浪费
    第二十章Flyweight模式publicclassBigcharFactory{//这里对使用到的内容进行了缓存privateHashMappool=newHashMap();//有则直接取,无则创建并保存到缓存。publicsynchronizedBigChargetBigChar(charcharname){BigCharbc=(BigChar)pool.get("......
  • 《图解设计模式》 第八部分 管理状态
    第17章Observer模式publicabstractclassNumberGenerator{privateArrayListobserverList=newArrayList();/*部分代码省略*///加入基础类,当需要通知的时候通知publicvoidaddObserver(Observerobserver){observerList.add(observer);}pub......
  • 常见设计模式-工厂模式
    文章目录1.简单工厂模式2.工厂方法模式3.抽象工厂模式设计模式七大原则工厂模式是一种创建型设计模式,它提供了一种创建对象的接口,但由子类决定要实例化的类是哪一个。工厂模式让一个类的实例化延迟到其子类。工厂模式主要分为三种:简单工厂模式、工厂方法模式......
  • 《图解设计模式》 第七部分 简单化
    Facade模式publicclassMain{publicstaticvoidmain(String[]args){PageMaker.makeWelcomePage("[email protected]","welcom.html");}}publicclassPageMaker{publicstaticvoidmakeWelcompage(Stringmailaddr,Stringfile......