设计模式_15:组合模式

将对象组合成属性结构以表示‘部分-整体‘的层次结构组合模式使得用户对单个对象和组合对象的使用具有一致性 import java.util.ArrayList; import java.util.List; public class Main { public static void main(String[] args) { Company topCompany = new
阅读本文

设计模式学习笔记(一)

设计模式学习笔记(一) 六大原则 1.单一职责原则(SRP) 应该有且仅有一个原因引起类的变更 通俗地讲,就是每个类只负责一项职责。(增强内聚) 解决的问题:如果一个类有一个以上的职责,这些职责就耦合在了一起,导致重构代码时,“牵一发而动全身”,使代码维护变得困难(所以要松耦合)。 另外,它还能减少职责扩散带来的代码维护困难的问题。 职责扩散:因为某种原因,某一职责被分化为颗粒度更细的多
阅读本文

Android设计模式之状态模式

前言 状态模式和策略模式结构几乎完全一样,但是他们的本质却完全不同。状态模式中的行为是平行的,不可替换的;策略模式的行为是完全独立,可以相互替换。 状态模式的理解         1. 状态模式中的行为由其状态来决定,不同的状态下有不同的行为。         2. 状态模式把对象的行为包装在不同的状态对象里,每一个状态对象都有一个共同的抽象状态基类。         3. 状态的模式的意
阅读本文

23种设计模式之三(观察者模式)

观察者模式:(对象间的一种一对多依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新) 观察者模式又称为发布/订阅(Publish/Subscribe)模式,因此我们可以用报纸期刊的订阅来形象的说明:    报社方负责出版报纸;    用户订阅了该报社的报纸,那么只要报社发布了新报纸,就会通知用户,或发到用户手上.    如果用户不想再读报纸,可以取消订阅,这样,报社发
阅读本文

设计模式之代理模式和动态代理

代理模式:为其他对象提供一种代理以控制对这个对象的访问。以下是代码实现:package com.porxy; /** * 定义一个抽象类,含有一个抽象方法 */ public abstract class Subject { public abstract void Request(); } /** * 一个真实的类,被代理的对象 */ public class RealSu
阅读本文

大战设计模式【5】—— 工厂模式

工厂方法(Factory Method)模式 设计模式使用的例子https://github.com/LinkinStars/DesignPatternsAllExample 一、定义定义一个用于创建对象的接口,让子类决定将哪一个类实例化。工厂方法模式让一个类的实例化延迟到其子类。工厂方法模式又简称为工厂模式,也可称为多态工厂模式,它是一种创建型模式。  二、结构Product(抽象产品):定义产
阅读本文

设计模式 分类

设计模式分为三种类型,共23种:创建型模式:单例模式、抽象工厂模式、建造者模式、工厂模式、原型模式。结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。行为型模式:模版方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、职责链模式(责任链模式)、访问者模式。设计模式六大原则1、开闭原则OCP开闭原则说的是,对扩展开放、
阅读本文

设计模式之总结篇

十一宅了,也没学习看啥书,所有时间花在了围棋上,虽然很颓废,不过令人欣慰的是居然升了3级,现在是6k水平,之前晚上下的多,停在9k挺长时间的,居然在10.1突破了,这么看来我能升段的目标还是可能实现的,这么看自信还真是挺重要的,而我一直不算个自信的人,本来打算10.1假期完成这个设计模式总结的,但是懒癌爆发,就拖到今天啦。设计模式的6大原则这也是个老生常谈的问题,我也不免俗1.单一职责
阅读本文

设计模式之——浅谈strategy模式(策略模式)

strategy模式,即策略模式。个人觉得吧,策略模式更多的是一种思维方式。首先我们要知道,为什么需要策略模式。举个例子,比如用程序输出今天下午去玩什么。 PlayGame 玩游戏package site.wangxin520.gof.strategy.demo; /** * 玩游戏的类 * @author wangXgnaw * */ public class PlayGame {
阅读本文

设计模式学习--外观模式

外观模式(Facade):为子系统中的一组接口提供一个一直的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。外观模式结构图:案例需求:新股民对股票不熟悉,买基金,基金的专业人士拿新股民的钱去购买股票。1:创建三个股票类和一个国债类。package FacadeModel; /** * 股票1 * @author 我不是张英俊 * */ public class Stoc
阅读本文

设计模式之简易工厂模式

需求:从键盘接收,写一个计算器。理解:面向对象设计的好处,明白三大特性 “封装,继承,多态”;注意:1.命名规范,2.代码重用,3.运算类和界面类分离,实现灵活性,方便维护,易于扩展。写一个运算父类:package com.opertionFactory; /** * 简易工厂模式:封装,继承,多态 * 封装:把运算类和控制台分离,方便维护 * 继承:写一个父类,包含两个属性和一个运算方法,
阅读本文

理解观察者、中介者模式

理解观察者、中介者模式2017/10/6Any fool can write code that a computer can understand. Good programmers write code that humans can understand. —— Martin Fowler为什么要写这篇文章观察者 (observer) 模式和 中介者 (mediator) 模式调用流程非常相
阅读本文

大战设计模式【3】—— 装饰模式

装饰模式(decorator)设计模式使用的例子https://github.com/LinkinStars/DesignPatternsAllExample 一、定义动态地给一个对象增加一些额外的职责,就增加对象功能来说,装饰模式远比生成子类实现更加灵活。装饰模式是一种对象结构型模式。 二、结构Component (抽象构件):具体构件和抽象装饰类的基类,声明了在具体构建中实现的业务方法。Con
阅读本文

单例设计模式 优缺点 及 使用场景

单利模式的优缺点和使用场景 首先介绍一下单例模式:     单例模式(Singleton),也叫单子模式,是一种常用的软件设计模式。在应用这个模式时,单例对象的类必须保证只有一个实例存在。许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。比如在某个服务器程序中,该服务器的配置信息存放在一个文件中,这些配置数据由一个单例对象统一读取,然后服务进程中的其他对象再通过这个单
阅读本文

从手工打造到工厂设计模式的演变历程

首先我们需要到umeng官网申请一个开发者账号。然后创建一个应用并获取appkey。 在之后呢,我们需要进行必不可少的一步就是,到各大平台申请第三方开发者账号,关于申请的流程官网文档讲解的已经很详细了,在这里我不再重复了。各大平台申请服务所需要等待的时间不等,通常是1-3天就可以搞定,建议在申请的同时,就进行sdk的集成,等申请通过之后,在换成正式的账号进行调试,这样一来开发申请两不误。http:
阅读本文

一次原型模式的模拟情况

走穿java23种设计模式-5原型模式原型模式很多人对这个设计模式也是不熟悉的。因为用得也是不多,原型模式一般用于多次创建一个类的对象,获取多个这个类的对象,并进行相应的操作,一般做法是多次new出来,但是原型模式是复制第一次创建的对象,然后通过多次复制得到多个对象。这种需求可能在现实需求中比较少,但是了解多一点没什么错。。。原型模式的现实场景比如要通知几十个客户有买车的实惠信息。 你不会笨到一个
阅读本文

死锁、Lock锁、等待唤醒机制、线程组、线程池、定时器、单例设计模式_DAY24

1:线程(理解)    (1)死锁       概念:           同步中,多个线程使用多把锁之间存在等待的现象。       原因分析:         a.线程1将锁1锁住,线程2将锁2锁住,而线程1要继续执行锁2中的代码,线程2要继续执行锁1中的代码,           但是此时,两个锁均处于锁死状态。最终导致两线程相互等待,进入无限等待状态。          b.有同步代码块的
阅读本文

设计模式怎样解决设计问题

决定对象的粒度 对象在大小和数目上变化极大。它们能表示下自硬件或上自整个应用的任何事物。那么怎样决定一个对象应该是什么呢?设计模式很好地讲述了这个问题。Facade模式描述了怎样用对象表示完整的子系统,Flyweight模式描述了如何支持大量的最小粒度的对象。其他一些设计模式描述了将一个对象分解成许多小对象的特定方法。Abstract Factory和Builder模式产生那些负责生成其他对象的对
阅读本文

Java 设计模式—单例模式

在阎宏博士的《JAVA与模式》一书中开头是这样描述单例(Singleton)模式的:  作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。       单例模式的特点:  1 单例类只能有一个实例。  2 单例类必须自己创建自己的唯一实例。  3 单例类必须向所有其他对象提供这一实例。   饿汉式单例类 1 public class
阅读本文