
设计模式
JMW1407
这个作者很懒,什么都没留下…
展开
-
当面试官问你什么是单例模式、实现方式、或者单例模式的线程安全问题,请这么回答他!
单例模式单例模式1、什么是单例模式2、单例模式的实现方式2.1、懒汉式创建单例对象2.1.1、懒汉式如何保证只创建一个对象2.1.2、懒汉式如何保证线程安全2.2、饿汉式创建单例对象3、 总结参考单例模式1、什么是单例模式单例模式是指在内存中只会创建且仅创建一次对象的设计模式。在程序中多次使用同一个对象且作用相同时,为了防止频繁地创建对象使得内存飙升,单例模式可以让程序仅在内存中创建一个对象,让所有需要调用的地方都共享这一单例对象。2、单例模式的实现方式单例模式有两种类型:懒汉式:在真正需要原创 2020-08-21 11:02:54 · 407 阅读 · 0 评论 -
设计模式——桥接模式(Bridge Pattern)
桥接模式桥接模式1、背景2、定义3、特征4、应用参考桥接模式1、背景在生活中,手机的品牌多种多样,手机的软件功能同样五花八门,现在要求不同的品牌手机具有类似的功能,比如通讯录和游戏,如何设计。1、根据不同的品牌划分,可以得到如下UML图:这样划分存在问题,如果我还需要增加‘输入法’功能、‘拍照’功能,再增加‘L品牌’、‘X品牌’你的类如何写?”继承关系变得原来越复杂。2、根据不同的手机功能划分,可以得到如下UML图:同样,要是增加手机品牌或者手机功能,也会产生很大影响。我们一直在用面向原创 2020-07-20 22:30:17 · 438 阅读 · 0 评论 -
设计模式——单例模式(Singleton Pattern)——懒汉模式以及线程安全问题的不同解决方法、以及饿汉模式
单例模式单例模式1、背景2、定义3、特征4、应用4.1、有缺陷的懒汉式4.2、线程安全、内存安全的懒汉式单例 (智能指针,锁)4.3、推荐的懒汉式单例(magic static )——局部静态变量4.4、饿汉模式参考单例模式1、背景举一个小例子,在我们的windows桌面上,我们打开了一个回收站,当我们试图再次打开一个新的回收站时,Windows系统并不会为你弹出一个新的回收站窗口。,也就是说在整个系统运行的过程中,系统只维护一个回收站的实例。这就是一个典型的单例模式运用。继续说回收站,我们在实际使原创 2020-07-19 23:47:17 · 598 阅读 · 0 评论 -
面试官问你如何进行程序设计?——设计模式之七大原则——接口隔离、合成复用、迪米特法则以及C++设计实现
设计模式的设计原则七大原则5、接口隔离(interface segregation principle)5.1、背景5.2、定义5.3、特征5.4、应用6、迪米特原则(law of demeter )6.1、背景6.2、定义6.3、特征6.4、应用7、合成复用原则(Composite Reuse Principle, CRP)7.1、背景7.2、定义7.3、特征7.4、应用参考七大原则设计原则名称作用单一职责原则类的职责要单一,不能将太多的职责放在一个类中开闭原则软件实体对原创 2020-07-19 21:08:09 · 1301 阅读 · 0 评论 -
面试官问你如何进行程序设计?——设计模式之七大原则——单一职责、里氏代换、开闭原则、依赖倒转以及C++简单实现
工人方法模式工人方法模式1、背景2、定义3、特征4、应用参考工人方法模式1、背景2、定义3、特征4、应用参考原创 2020-07-18 00:18:17 · 2162 阅读 · 0 评论 -
设计模式——抽象工厂模式(Abstract Factory Pattern)
抽象工程模式Abstract Factory 抽象工程模式1、背景2、定义3、特征4、应用参考抽象工程模式1、背景2、定义3、特征4、应用参考原创 2020-07-15 22:22:59 · 403 阅读 · 0 评论 -
设计模式——观察者模式(Observer Pattern)(发布/订阅模式)
观察者模式Observer Pattern观察者模式(发布/订阅模式)1、背景2、定义3、特征4、应用参考观察者模式(发布/订阅模式)1、背景当我们在打团队游戏时,当你受到攻击需要队友帮忙时该怎么办?这时候就需要给你所有的队友发送一条你正在被攻击的消息。所有的队友会根据你发送的消息作出相应的动作。比如有团队意识来帮你,或者不帮你继续玩自己的。这里面的队员就是该设计模式名字中的观察者。那么受到攻击的自己的是什么呢。被观察者?不,准确的我们称之为目标或者主题。所以整个流程大概就是:当目标(主题)的状态原创 2020-07-14 22:19:23 · 492 阅读 · 0 评论 -
设计模式——工厂方法模式(Factory Method Pattern)
工人方法模式Proxy Pattern工人方法模式1、背景2、定义3、特征4、应用参考工人方法模式1、背景2、定义3、特征4、应用参考原创 2020-07-13 21:54:12 · 455 阅读 · 0 评论 -
设计模式——代理模式(Proxy Pattern)之为别人做嫁衣
代理模式Decorator Pattern代理模式代理模式原创 2020-07-12 22:54:14 · 354 阅读 · 0 评论 -
设计模式——装饰模式(Decorator Pattern)
装饰模式Decorator Pattern装饰模式1、背景2、定义3、特征4、应用参考装饰模式1、背景假设奶茶店有两种茶,果茶(fruit tea)和奶茶(milky tea),同时这两种茶饮料可以添加不同的配料 果肉(pulp)或者蔗糖(sugar),茶品可以和配料进行组合,所以可以得到:1、pulp_fruit_tea2、pulp_milky_tea3、sugar_fruit_tea4、sugar_milky_tea日后还会增加新的茶品和配料。装饰模式实际上是一直提原创 2020-07-10 22:57:25 · 325 阅读 · 0 评论 -
设计模式——策略模式(Strategy Pattern)
策略模式Strategy Pattern策略模式1、背景2、定义3、特征4、应用策略模式1、背景在我们的生活中我们可以通过很多种不同的方式来完成一件事情,这里的每一种方式都可以称作为一种策略。我们可以根据环境、条件等因素的不同选择不同的策略来完成这件事情。比如:某软件公司为某电影院开发了一套电影院售票系统,在该系统中需要为不同类型的用户提供不同的电影票的打折方式,具体打折方案如下:(1)学生凭学生证可享受票价8折优惠(2)年龄在10周岁及以下的儿童可享受每张票减免10元的优惠(原始票价需大于等原创 2020-07-08 21:47:23 · 866 阅读 · 0 评论 -
设计模式—— 简单工厂模式(Simple Factory Pattern)
简单工厂模式简单工厂模式1、背景2、定义3、特征4、应用参考简单工厂模式1、背景我开一家披萨店,当客户需要某种披萨并且我这家店里也能做的时候,我就会为其提供所需要的披萨(当然是要钱的哈哈),如果其所需的我这没有,则是另外的情况,后面会谈。这时候,我这家披萨店就可以看做工厂(Factory),而生产出来的披萨被成为产品(Product),披萨的名称则被称为参数,工厂可以根据参数的不同返回不同的产品,这就是简单工厂模式。工厂模式有一种非常形象的描述,建立对象的类就如一个工厂,而需要被建立的对象就是一原创 2020-07-07 21:38:14 · 7688 阅读 · 0 评论