设计模式 - 技术教程文章

Java 基础入门随笔(10) JavaSE版——单例设计模式【代码】

设计模式:对问题行之有效的解决方式。其实它是一种思想。1.单例设计模式。 解决的问题:就是可以保证一个类在内存中的对象唯一性。(单个实例) 使用单例设计模式需求:必须对于多个程序使用同一个配置信息对象时,就需要保证该对象的唯一性。 如何保证对象唯一性? 解决步骤: 1.不允许其他程序用new创建该对象。 ...

ANDROID 中设计模式的採用--创建型模式【图】

?? 所谓模式就是在某一情景下解决某个问题的固定解决方式。 全部的创建型模式都是用作对象的创建或实例化的解决方式。 1 简单工厂模式创建对象的最简单方法是使用new来创建一个对象,假设仅仅创建一种固定不变的对象,能够使用new来创建这个对象。假设要依据不同场景创建不同类型的对象,就可能须要採用不同的方法,就出现了不同的模式的採用和总结。如ANDROID的媒体框架中为了实现对不同媒体源的播放,就须要...

JAVA设计模式之 命令模式【Command Pattern】【图】

一、概述 命令模式可以将请求发送者和接收者完全解耦,发送者与接收者之间没有直接引用关系,发送请求的对象只需要知道如何发送请求,而不必知道如何完成请求。核心在于引入了命令类,通过命令类来降低发送者和接收者的耦合度,请求发送者只需指定一个命令对象,再通过命令对象来调用请求接收者的处理方法,命令模式是一种对象行为型模式。二、使用场景1>、系统要求请求发送者和接收者的解耦,使得调用者和接收者不直接交互;2>...

设计模式 Vs实践-1 工厂模式【代码】【图】

前言:设计模式看的不少,但是实际项目中使用(VisualStudio环境)Reshaper重构比较多,比如重命名,提取公共类,主要原因是好多业务不确定,一开始大部分情况下都是先实现一个方法,该方法可以做为公共方法了才开始考虑重构,本系列笔记主要记录:已经实现了功能的代码片段想要想改成某种实现模式怎么改最方便。设计模式主要内容参考https://www.runoob.com/design-pattern/factory-pattern.html从工厂模式开始研究1、工厂模式(Fa...

php设计模式目录

此设计模式是在【大话设计模式】原书的基础上完成的,只是此书是JAVA代码的,我运用PHP语言实现了,可能有些地方不太一样,我根据个人经验更新了下,如果有不对的地方,请见谅;目前只完成了一部分,后续会慢慢更新的。 1:第 1 章 策略模式【STRATEGY PATTERN】详情2:第 2 章 代理模式【PROXY PATTERN】详情3:第 3 章 单例模式【SINGLETON PATTERN】4:第 4 章 多例模式【MULTITION PATTERN】5:第 5 章 工厂方法模式【FACTORY ...

C#设计模式系列:桥接模式(Bridge)【代码】【图】

1.1定义 当一个抽象可能有多个实现时,通常用继承来进行协调。抽象类定义对该抽象的接口,而具体的子类则用不同的方式加以实现。继承机制将抽象部分与它的实现部分固定在一起,使得难以对抽象部分和实现部分独立地进行修改、扩充和重用。  如果一个抽象类或接口有多个具体实现子类,而这些子类之中有内容或概念上重叠,需要我们把抽象的共同部分各自独立开来:即原来是准备放在一个接口里,现在需要设计两个接口——抽象接口和行...

设计模式-工厂模式【代码】【图】

1、简单工厂模式package com.jdwa.factory.simple;public interface IProduct {void use(); }package com.jdwa.factory.simple;public class Phone implements IProduct {@Overridepublic void use() {System.out.println("通话");} }package com.jdwa.factory.simple;public class Fridge implements IProduct {@Overridepublic void use() {System.out.println("保鲜食物");} } package com.jdwa.factory.simple;public class Pr...

设计模式之代理模式

代理模式就是代替处理,类似电视剧当中的替身,现实生活中的代理商。 多一个代理类出来,替原对象进行一些操作,比如我们在租房子的时候回去找中介,为什么呢?因为你对该地区房屋的信息掌握的不够全面,希望找一个更熟悉的人去帮你做,此处的代理就是这个意思。再如我们有的时候打官司,我们需要请律师,因为律师在法律方面有专长,可以替我们进行操作,表达我们的想法。代理模式实现:代理类和被代理类都必须具有同一接口,这样同...

设计模式之刘伟老师文章学习记录-------------依赖倒转原则

如果说开闭原则是面向对象设计的目标的话,那么依赖倒转原则就是面向对象设计的主要实现机制之一,它是系统抽象化的具体实现。依赖倒转原则是Robert C. Martin在1996年为“C++Reporter”所写的专栏Engineering Notebook的第三篇,后来加入到他在2002年出版的经典著作“Agile Software Development, Principles, Patterns, and Practices”一书中。依赖倒转原则定义如下:依赖倒转原则(Dependency Inversion Principle, DIP):抽象...

1月18日 - 23种设计模式简介

设计模式(Design Patterns) ——可复用面向对象软件的基础设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理的运用设...

设计模式之装饰模式【代码】【图】

一、什么是装饰模式  概念:动态的给一个对象添加一些额外的功能。就增加功能来说,装饰模式比生成自子类更加的灵活。  举个例子,笔者自己以前喜欢吃手抓饼。每天都要去十字路口大爷那里买手抓饼,但是大爷卖的手抓饼有大份,小份等等,还有各种口味的配料添加。比如我比较变态辣,喜欢加火腿,喜欢加鸡蛋,所以每次去买手抓饼都会在最基础的手抓饼上加上"装饰",让他变成豪华版手抓饼,这其实就是装饰模式的一个体现。二、装...

设计模式--13、享元模式【代码】【图】

享元模式:  先让我们来看一个应用场景:  比如说一个文本系统,每个字母定一个对象,那么大小写字母一共就是52个,那么就要定义52个对象。如果有一个1M的文本,那么字母是何其的多,如果每个字母都定义一个对象那么内存早就爆了。那么如果要是每个字母都共享一个对象,那么就大大节约了资源。也就是说在一个系统中如果有多个相同的对象,那么只共享一份就可以了,不必每个都去实例化一个对象。  在Flyweight模式中,由于要产...

JavaScript设计模式与开发实践——读书笔记1.高阶函数(下)【代码】

上部分主要介绍高阶函数的常见形式,本部分将着重介绍高阶函数的高级应用。  1.currying  currying指的是函数柯里化,又称部分求值。一个currying的函数会先接受一些参数,但不立即求值,而是继续返回给另一个函数,通过闭包存储起来。等到函数被真正需求要求值的时候,将之前传入的参数统一起来求值。例如,我们要计算一个月的开销,我们并不需要计算每天具体花了多少,而是需要计算月底总共花掉多少,也就是说,实际上我们只...

设计模式学习笔记--备忘录模式【图】

一.简介今天来学习一下设计模式中的备忘录模式。说到这个模式,也许不太熟悉,不过相信写代码的时候,写错了之后,Ctrl+Z的功能用得还是比较多的,比如Word,Photoshop等编辑软件中,撤销功能都是必不可少的。而备忘录模式就是一个很好地实现撤销功能的一种设计模式。它可以让我们的系统恢复到之前的状态,嗯哼,传说中的月光宝盒!下面看一下备忘录模式的定义以及UML类图: 在不破坏封装性的前提下,捕获一个对象的内部状态,并在...

设计模式之Visitor模式(笔记)【代码】【图】

訪问者模式:表示一个作用于某个对象结构中的各元素操作。它使你能够不改变各元素的类的前提下定义作用于这些元素的新操作。 首先定义一个visitor抽象类,为每一个详细类声明一个visit操作publicabstractclass Visitor {publicabstractvoidvisitConcreteElementA(ConcreteElementA elementA);publicabstractvoidvisitConcreteElementB(ConcreteElementB elementB); }接着定义继承visitor的详细类publicclassConcreteVisitor1extend...

1、软件设计模式概念【图】

设计模式(Design Pattern)是前辈们对代码开发经验的总结,是解决特定问题的一系列套路。它不是语法规定,而是一套用来提高代码可复用性、可维护性、可读性、稳健性以及安全性的解决方案。1995 年,GoF(Gang of Four,四人组/四人帮)合作出版了《设计模式:可复用面向对象软件的基础》一书,共收录了 23 种设计模式,从此树立了软件设计模式领域的里程碑,人称「GoF设计模式」。 这 23 种设计模式的本质是面向对象设计原则的实际...

设计模式之抽象工厂模式【代码】

有些情况下我们需要根据不同的选择逻辑提供不同的构造工厂,而对于多个工厂而言需要一个统一的抽象工厂class System{}class Soft{}class MacSystem extends System{}class MacSoft extends Soft{}class WinSystem extends System{}class WinSoft extends Soft{}/** * AbstractFactory class[抽象工厂模式] */interface AbstractFactory { public function CreateSystem(); public function CreateSoft();}class MacFactory i...

设计模式——观察者模式(C++实现)【代码】【图】

1 #include <iostream>2 #include <vector>3 #include <algorithm>4 #include <iterator>5 #include <string>6 7usingnamespace std;8 9class STSubject; 1011//观察者12class STObserver 13{ 14public: 15virtualvoid Update() = 0; 16}; 1718class STConcreteObserverA: public STObserver 19{ 20public: 21virtualvoid Update() 22 { 23 cout<< "ConcreteObserverA Get Subject: "<< endl; 24 } ...

设计模式【代码】

抽象工厂模式factory:public interface Send {public void send(); }public class SmsSendImpl implements Send {@Overridepublic void send() {// TODO Auto-generated method stubSystem.out.println("sms send");} }public class MailSendImpl implements Send {@Overridepublic void send() {// TODO Auto-generated method stubSystem.out.println("mail send");} }public class FactoryCreate {public Send produce(String ...

C#设计模式(9)——装饰者模式(Decorator Pattern)【代码】【图】

原文:C#设计模式(9)——装饰者模式(Decorator Pattern)一、引言在软件开发中,我们经常想要对一类对象添加不同的功能,例如要给手机添加贴膜,手机挂件,手机外壳等,如果此时利用继承来实现的话,就需要定义无数的类,如StickerPhone(贴膜是手机类)、AccessoriesPhone(挂件手机类)等,这样就会导致 ”子类爆炸“问题,为了解决这个问题,我们可以使用装饰者模式来动态地给一个对象添加额外的职责。下面让我们看看装饰者模式...

设计模式01

]]>-*/html { font-family: Times, serif; font-size: 12pt; }.title { text-align: center; }.todo { color: red; }.done { color: green; }.tag { background-color: #add8e6; font-weight:normal }.target { }.timestamp { color: #bebebe; }.timestamp-kwd { color: #5f9ea0; }.right {margin-left:auto; margin-right:0px; text-align:right;}.left {margin-left:0px; margin-right:auto; text-align:left;}.cen...

iOS 对于Target-Action设计模式的理解

iOS 开发之Target-action模式Target-action:目标-动作模式,它贯穿于 iOS 开发始终。但是对于初学者来说,还是被这种模式搞得一头雾水。其实 Target-action 模式很简单,就是当某个事件发生时,调用那个对象中的那个方法。如:按下按钮时,调用 Controller 里边的 click 方 法。“那个对象”就是 Target,“那个方法”就是 Action,及 Controller 是 Targer,click 方法是 action。一般 Target 都是 Controller,而 Action 有它自己固有的格式...

设计模式3

本章是关于设计模式的最后一讲,会讲到第三种设计模式——行为型模式,共11种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。先来张图,看看这11中模式的关系:第一类:通过父类与子类的关系进行实现。第二类:两个类之间。第三类:类的状态。第四类:通过中间类13、策略模式(strategy)策略模式定义了一系列算法,并将每个算法封装起来,...

设计模式之————建造者模式【代码】

建造者模式1. 什么是建造者模式?建造者模式属于创造型模式,它是将复杂对象的建造过程抽象出来,使这个抽象过程的不同实现方法可以构造出不同表现的对象。举例:普通房子和高楼,两者都很难建造,但也有相似点:打地基、砌墙、盖屋顶。普通房子的地基5m,墙10cm;高楼的地基100m,墙20cm。2. 建造者模式结构Product(产品角色):一个具体的产品对象Builder(抽象建造者):创建一个Product对象的各个部件指定的接口/抽象类ConcreteBu...

设计模式

里氏代换原则(Liskov Substitution Principle) 接口分离原则( Interface Segregation Principle) 依赖反转原则( Dependency Inversion Principle)特征:高等级模块不应依赖于低等级模块,它们应该依赖于抽象模块。 参考:《Design Patterns in .NET》原文:https://www.cnblogs.com/xieweikang/p/13917910.html

设计模式总结——程序猿的武功秘籍(上)

万年前,人类用肢体力量来扩展地盘、获取食物,那时候比的是发育。后来人们学会了使用工具。開始利用石头、棍棒。再后来,人类有了文明,刀枪棍棒使得身体素养不是唯一决定强弱的唯一条件。再后来。一些聪明人依据人们的打斗习惯再增加哲学的思考,以攻守进退、运动疾徐、刚柔虚实为原则。发明了武术,即使一些身体素养不好的人。依据自己的情况学习对应的武术也能成为武术高手。这都要感谢发明武术秘籍的人,也要感谢社会的发展对...

JAVA 设计模式—单例模式【代码】

JAVA中的单例模式是一种广泛使用的设计模式,是Java里23种设计模式之一。单例模式的作用是保证在JAVA程序中,某个类只有一个程序存在。这里简单介绍其两种基本写法:饿汉式和懒汉式。饿汉式与懒汉式区别在于饿汉式在类加载时就对实例进行创建,优点是线程安全,缺点是不管用不用都占用内存;懒汉式是单例在需要的时候采取创建的,如果单例已经创建,再次调用将不会创建新的对象,而是直接返回之前创建的对象,优点是占用内存小,缺...

设计模式学习笔记

1 什么是设计模式模式是在特定环境下人们解决某类重复出现问题的一套成功或有效的解决方案。【A pattern is a successful or efficient solution to a recurring problem within a context】软件模式是在软件开发中某些可重现问题的一些有效解决方法,软件模式的基础结构主要由四部分构成,包括问题描述【待解决的问题是什么】、前提条件【在何种环境或约束条件下使用】、解法【如何解决】和效果【有哪些优缺点】,如图1-1所...

C++设计模式——策略模式Strategy-Pattern【代码】【图】

动机(Motivation)在软件构建过程中,某些对象使用的算法可能多种多样,经常改变,如果将这些算法都编码到对象中,将会使对象变得异常复杂;而且有时候支持不使用的算法也是一个性能负担。如何在运行时根据需要透明地更改对象的算法?将算法与对象本身解耦,从而避免上述问题?模式定义定义一系列算法,把它们一个个封装起来,并且使它们可互相替换(变化)。该模式使得算法可独立于使用它的客户程序(稳定)而变化(扩展,子类化)...

大话设计模式-策略模式这章说的有瑕疵呀

大话设计模式-策略模式这章说的确实有瑕疵,比如说,策略模式引入的上下文,从类图上来说,是为了组合多个策略的,但是在文中却只提到了持有一个策略对象,那这样我为什么不直接使用策略接口呢,干嘛还要创建这一个没啥用的 中间类呢,而我的理解是,这个类的作用是用来聚合多个,算法策略,发挥者,再次组合多个形成一个整体的能力,所以才应该有这个中间类的存在,而策略模式与简单工厂的组合,有时候并不能使用反射去做优化,应...