设计模式
暖馒
这个作者很懒,什么都没留下…
展开
-
设计模式之建造者模式
(2)在抽象工厂模式中,客户端实例化工厂类,然后调用工厂方法获取所需产品对象,而在建造者模式中,客户端可以不直接调用建造者的相关方法,而是通过指挥者类来指导如何生成对象,包括对象的组装过程和建造步骤,它侧重于一步步构造一个复杂对象,返回一个完整的对象。建造者模式隐藏了复杂对象的创建过程,它把复杂对象的创建过程加以抽象,通过子。在客户端代码中,无须关心产品对象的具体组装过程,只需确定具体建造者的类型即可,建造者模式将复杂对象的构建与对象的表现分离开来,这样使得同样的构建过程可以创建出不同的表现。原创 2024-06-28 14:27:01 · 392 阅读 · 0 评论 -
设计模式之迪米特原则
迪米特法则:如果两个类不必直接通信,那么这两个类就不应当发生直接的相互作用。如果其中一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用。根本思想:强调了类之间的松耦合,类之间的耦合越弱,越有利于复用,一个处在弱耦合的类被修改,不会对有关系的类造成波及。迪米特原则也叫最少知识原则。原创 2024-06-28 13:20:07 · 97 阅读 · 0 评论 -
设计模式之依赖倒转原则
要针对接口编程,不要对实现编程。例如:无论主板、CPU、内存、硬盘都是在针对接口设计的,如果针对实现来设计,内存就要对应到具体的某个品牌的主板,那就会出现换内存需要把主板也换了的尴尬。A:高层模块不应该依赖低层模块。两个都应该依赖抽象。里氏替换原则:子类型必须能够替换掉它们的父类型。B:抽象不应该依赖细节。原创 2024-06-28 10:45:14 · 414 阅读 · 0 评论 -
设计模式之外观模式
此时用外观模式就非常合适。3、其次,在开发阶段,子系统往往因为不断地重构演化而变得越来越复杂,大多数的模式使用时也都会产生很多很小的类,这本是好事,但也给外部嗲用它们的用户程序带来了使用上的困难,增加外观Facade可以提供一个简单的接口,减少她们之间的依赖。2、在设计初期阶段,应该要有意识的将不同的两个层分离,比如经典的三层架构,就需要考虑在数据访问层和业务逻辑层、业务逻辑层和表示层的层与层之间建立外观Facade,这样可以为复杂的子系统提供一个简单的接口,使得耦合大大降低。原创 2024-06-28 10:10:42 · 285 阅读 · 0 评论 -
设计模式之装饰模式
装饰模式提供了一个非常好的解决方法:他把每个要装饰的功能放在单独的类中,并让这个类包装他所要装饰的对象,因此,当需要执行特殊行为时,客户代码就可以在运行时根据需要有选择地、按顺序的使用装饰功能包装对象。一个装饰基类继承于这个基础对象类,构造函数的参数类型是基础对象类。像俄罗斯套娃一样,每个装饰类都是独立存在的,但是他们却可以一个一个全部都装饰在同一个对象上面。装饰模式:动态的给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。装饰模式是为已有功能动态添加更多功能的一种方式。原创 2024-06-28 09:32:09 · 132 阅读 · 0 评论 -
设计模式之原型模式
net在system命名空间中提供了ICloneable接口,其中唯一的一个方法Clone(),这样只需要实现这个接口就可以完成原型模式了。深复制和浅复制的区别:浅复制会将值类型的字段执行逐位复制,如果是引用类型字段,则复制引用但不复制引用的对象。一般在初始化信息不发生变化的情况下,克隆是最好的办法,这既隐藏了对象创建的细节,又对性能是大大的提高。深复制,不仅执行浅复制的所有操作,还将引用对象的变量指向复制过的新对象,而不是原有的被引用的对象。等于是不用重新初始化对象,而是动态的获得对象运行时的状态。原创 2024-06-27 17:46:27 · 196 阅读 · 0 评论 -
设计模式之模板模式
自己项目的一个回忆:接下来就可以看看在线固化下料处,有两个上下层几乎一样的流程,所以我们可以选择写一个总流程的父类,上下层继承父类,来避免重复代码。将需要更改的参数通过子类继承的时候赋值进去即可。模板方法模式,定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。当我们要完成在某一细节层次都一致的一个过程或一系列步骤,但其个别步骤在更详细的层次上的实现可能不同时,我们通常考虑用模板方法模式来处理。原创 2024-06-27 17:25:46 · 160 阅读 · 0 评论 -
设计模式之代理模式
1、远程代理:为一个对象在不同的地址空间提供局部代表,这样可以隐藏一个对象存在于不同地址空间的事实。(在应用程序的项目中加入一个Web引用,引用一个WebService,此时会在项目中生成一个WebReference的文件夹和一些文件,其实他们就是代理,这就使得客户端程序调用代理模式就可以解决远程访问的问题)2、虚拟代理:根据需要创建开销很大的对象,通过它来存放实例化需要很长时间的真实对象。用户------>代理------->对象。客户----->代购------->香港。大概就是这么个意思。原创 2024-06-27 17:13:51 · 211 阅读 · 0 评论 -
设计模式之策略模式
理解:以算法来举例,比如商场的各种促销算法,不管是正常售价,还是打折售价,还是满减,最后都是输出一个收费结果。(但是,这个子类的构造可以添加参数,根据不同的促销模式,增加不同的参数需求)。利用简单工厂模式加策略模式结合,建立一个分割类,此类构造函数接收客户端的变化,根据变化反馈不同的算法类,此类有一个开放的获取结果的方法,这个方法封装变化,不管是哪一种的促销方式,此方法均同意返回计算结果。在客户端,只需要认识一个类,而简单工厂模式却是需要客户端认识两个类的。原创 2024-06-27 16:55:30 · 453 阅读 · 0 评论 -
设计模式之工厂方法模式
工厂方法模式,不仅有对象的父类,还有一个工厂模式的父类,所有生产工厂均继承该父类,让子类工厂决定实例化哪一个对象类,工厂方法使一个类的实例化延迟到子类工厂,在上层使用得时候,只需要更改工厂对象即可,其他实现的代码都不需要更改,这样就完全符合封闭开放原则。简单工厂模式,是建立一个父类,由很多想似的子类继承该父类,有一个简单工厂类,负责生产对应的子类对象,使得客户端可以不用去考虑需要返回的是哪个子类对象。工厂方法模式是建立在简单工厂模式之上。原创 2024-06-27 16:34:47 · 129 阅读 · 0 评论 -
设计模式之简单工厂
个人总结:简单工厂就是为了解耦合,当使用者需要新增一个方法的时候,只需要同样继承父类,实现父类的一些虚方法即可。这样就可保证,原来已经写好的类不用再次更改,只需要新增,这样大大减低风险。原创 2024-06-27 09:58:25 · 177 阅读 · 0 评论