
设计模式
源大郎
这个作者很懒,什么都没留下…
展开
-
设计模式——单例模式
单例模式可以说是除了工厂模式以外最最最让人们熟知的设计模式了。他的特点很简单,就是一个类只有唯一一个实例对象,一般对于比较消耗资源由没有配置上的变动的对象,就比较适合单例模式,Spring Bean的默认就是单例。像而且为了防止有一些不必要的线程同步,单例模式都是比较好的,比如win下的任务管理器。实现单例模式的方式也是五花八门的,整体分为懒汉式和饿汉式。懒汉式懒汉,懒汉顾名思义,不到必要的时候就不初始化,概括点说就是延迟加载。实现方式有经典的双重检测,静态内部类也算是懒汉式,因为静态内部类是延后加原创 2020-06-10 21:21:00 · 158 阅读 · 0 评论 -
设计模式——建造者模式(基于《大话设计模式》)
这个设计模式被《Effective Java》推荐在构造器参数比较多时使用,它可以规范化创建流程和具有良好的可读性。建造者模式:一个复杂对象的创建与它的标识分离,使得同样的构建过程可以创建不同的表示。按照《Effective Java》写个类似的例子吧。方便面,分为干拌面和泡面,他们都属于方便面,有面饼,不过干拌面和泡面的味道有点区别的,就需要分开写,如果直接写一般的构造器写法或者重叠构造器(其实这里还好,参数比较少),那样对客户端不太友好,不够程序化就容易出错。建造者类一遍实现于被建造者的内部原创 2020-05-29 05:15:13 · 163 阅读 · 0 评论 -
设计模式——模板方法模式(基于《大话设计模式》)
话说我这一系统设计模式的标题,不就是个模板方法嘛…就拿标题这事来举例吧模板方法类abstract class TitleTemplate{ public void template(){ System.out.print("设计模式——"); designmode(); System.out.print("(基于大话设计模式)"); } abstract public void designmode();}基于模板的其原创 2020-05-28 03:49:11 · 165 阅读 · 0 评论 -
设计模式——外观模式(基于《大话设计模式》)
书中提到了买股票和基金的例子,倒是想到了股票买卖的算法题要是真的买股票可以用动态规划,那就得有个时光机了2333定义: 为了子系统中的一组接口提供一个一致的界面,此模式定义一个高层接口,这个接口使得这一子系统更加容易使用。这个模式将一些类的方法作为一个组合,然后另外一些方法作为另一个组合,然后外部直接和这个外部类打交道即可。这个是经常使用的设计模式。它符合依赖倒转原则(都依赖与抽象)和迪米特法则(最小知识原则)比如MVC结构就有它的身影,像dao层会创建相应的dao接口对数据库进行增删改查,而业务原创 2020-05-27 04:00:24 · 155 阅读 · 0 评论 -
设计模式——原型模式(基于《大话设计模式》)
定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。就像复印一样。将一个原件复印n多份,复印件有原件的全部信息,而且彼此独立。再举个例子,抄作业,虽然是抄,但是该有的态度还是有吧,总不能写一个与xxx同学一样就完事了吧,得把内容也全部誊抄下来吧。但是全抄一样的吧,老师一眼看出来,就把分扣没了 (想起高中时月考给后桌抄主观题,那哥们一字未改,我俩雷同卷都被判0分) 。所以我们也可以进行一些修改。在Java中有一个Cloneable的接口,里面没有实际的方法,这是一个指示性接口,说明本.原创 2020-05-26 03:54:04 · 205 阅读 · 0 评论 -
设计模式——装饰模式(基于《大话设计模式》)
装饰模式:动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更灵活。就是套娃模式,书中举了穿衣服的例子,装配的顺序不固定(比如把内裤穿里面还是外面(超人和正常人)),但是装配的细节需要对外隐藏(不阔能光着身子在其他人面前穿衣服吧),出于隐私考虑穿衣服时只能有穿衣服的人和衣服相互作用。我们来设想一个场景,有一些肉…然后要料理这块肉,我们可以先切片,加入调料,再加热诸如此类的操作,当然如果是个新手可能就出现先加热再切片然后撒调料这种情况。这就挺符合装饰模式的。烹饪接口(或者说决定干这原创 2020-05-25 03:36:39 · 136 阅读 · 0 评论 -
设计模式——单一原则,开放封闭原则,依赖倒转原则,迪米特法则(基于《大话设计模式》)
单一职责原则:定义:就一个类而言,应该仅有一个引起它变化的原因。当一个类承担职责过多,就等于将这些职责耦合在一起,一个责任的变化可能会削弱或者抑制这个类完成其他职责的能力。书中举了个例子,手机具备几乎一切多媒体功能,可是手机照相并干不过相机,听歌干不过hifi mp3,可以这么说术业有专攻,写程序也一样,如果一个程序实现得过于冗杂,就会导致,重构时无从下手,或者容易出错。而设计模式的一大本质就为了解耦这些类之间的耦合关系。开放封闭原则这个是经常听到的一个原则。简单的说就是对拓展开放对修改封闭原创 2020-05-24 03:24:23 · 181 阅读 · 0 评论 -
设计模式——策略模式(基于《大话设计模式》)
跟简单工厂模式挺像的,不过一个是封装算法(或者说行为),一个是封装对象。不过书中用的抽象类,我认为略有些不妥,因为算法本质上是一种行为,对行为的抽象应该使用接口才对。假如说,有一块牛肉,现在我们想吃它,烹饪牛肉,有很多方式,比如炒,煎,煮。...原创 2020-05-23 04:45:01 · 173 阅读 · 0 评论 -
设计模式——工厂模式(基于《大话设计模式》)
简单工厂:(emmm中文写名好像是有点不伦不类的)产品类:abstract class 方便面{ private String 口味; abstract public void 查看信息(); public 方便面(String 口味) { this.口味 = 口味; } public String get口味() { return 口味; }} class 泡椒牛肉面 extends 方便面{ pu原创 2020-05-22 03:16:13 · 190 阅读 · 0 评论 -
设计模式——代理模式(基于《大话设计模式》)
书中举例的那个帮人追妹子的例子过于真实,举报了(不是),不过我为啥在520看这种例子,淦(噢521了)代理模式分为动态代理和静态代理。概述书中举例了一个场景,一个人(A)想追一个妹子©,可是A不认识C,而正好他的好朋友(B)认识C,A便托B去给C送花送礼物之类的,B就是A的代理为C服务。(这种例子还有很多像现在很的各种中介平台不就干这事的嘛,就说中间商啦)概括一下就是:为其他对象提供一种代理以控制对这个对象的访问。首先明确代理就是替被代理类做一些行为,在它的原行为的基础上加可以加一些自己的操作原创 2020-05-21 04:03:21 · 212 阅读 · 1 评论