<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[xsyfl的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/xsyfl</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; xsyfl]]></copyright><item><title><![CDATA[大话设计模式读书笔记（十七） 桥接模式]]></title><link>https://blog.youkuaiyun.com/xsyfl/article/details/70545729</link><guid>https://blog.youkuaiyun.com/xsyfl/article/details/70545729</guid><author>xsyfl</author><pubDate>Sun, 23 Apr 2017 20:50:04 +0800</pubDate><description><![CDATA[桥接模式
桥接模式（Bridge）: 将抽象部分和它的实现部分分离，使他们都可以独立地变化。
桥接模式UMl结构图：




Java代码实现：
Implementor类：
public interface Implementor {
	public void operation();
}



Implementor具体实现
public class ConcreteI]]></description><category></category></item><item><title><![CDATA[单例模式]]></title><link>https://blog.youkuaiyun.com/xsyfl/article/details/70473517</link><guid>https://blog.youkuaiyun.com/xsyfl/article/details/70473517</guid><author>xsyfl</author><pubDate>Sat, 22 Apr 2017 17:50:22 +0800</pubDate><description><![CDATA[原文作者：张新强

原文地址：http://www.barryzhang.com/archives/521

1. 前言

单例(Singleton)应该是开发者们最熟悉的设计模式了，并且好像也是最容易实现的——基本上每个开发者都能够随手写出——但是，真的是这样吗？
作为一个Java开发者，也许你觉得自己对单例模式的了解已经足够多了。我并不想危言耸听说一定还有你不知道的——毕竟我自己]]></description><category></category></item><item><title><![CDATA[大话设计模式读书笔记（十六） 组合模式]]></title><link>https://blog.youkuaiyun.com/xsyfl/article/details/70432155</link><guid>https://blog.youkuaiyun.com/xsyfl/article/details/70432155</guid><author>xsyfl</author><pubDate>Sat, 22 Apr 2017 13:51:17 +0800</pubDate><description><![CDATA[组合模式：
组合模式（Composite）:将对象组合成树形结构以表示‘部分-整体’的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。
组合模式UMl结构图：



java代码实现：
/**
 *Compoent为组合中的对象声明一个接口
 *在适当情况下，实现所有类共有接口的默认行为。
 *声明一个接口用于访问和管理Compoent的子部件
 */
public ]]></description><category></category></item><item><title><![CDATA[大话设计模式读书笔记（十五） 备忘录模式]]></title><link>https://blog.youkuaiyun.com/xsyfl/article/details/70245087</link><guid>https://blog.youkuaiyun.com/xsyfl/article/details/70245087</guid><author>xsyfl</author><pubDate>Wed, 19 Apr 2017 20:47:38 +0800</pubDate><description><![CDATA[备忘录模式：
备忘录模式（Memento）:在不破坏封装性的前提下，捕获一个对象的内部状态，并在该对象之外保存这个状态，这样以后就可以将这个对象回复到原先保存的状态。
模式备忘录类图：

涉及角色：
Originator（发起人）：负责创建一个备忘录Memento,用以当前时刻它的内部状态，并可以使用备忘录回复内部状态。Originator可以根据需要决定Memento存储Origina]]></description><category></category></item><item><title><![CDATA[大话设计模式读书笔记（十四） 适配器模式]]></title><link>https://blog.youkuaiyun.com/xsyfl/article/details/70244832</link><guid>https://blog.youkuaiyun.com/xsyfl/article/details/70244832</guid><author>xsyfl</author><pubDate>Wed, 19 Apr 2017 20:21:46 +0800</pubDate><description><![CDATA[适配器模式：
适配器模式（Adapter）：将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
使用情景：
在软件开发中，当系统的数据和行为都正确，但接口不符时，我们应当考虑适配器，目的是使控制范围之外的一个原有对象于某个接口匹配。适配器模式主要应用于希望复用一些现有的类，但是接口与复用环境不一致的情况。
适配器模式结构]]></description><category></category></item><item><title><![CDATA[大话设计模式读书笔记（十三） 状态模式]]></title><link>https://blog.youkuaiyun.com/xsyfl/article/details/70215253</link><guid>https://blog.youkuaiyun.com/xsyfl/article/details/70215253</guid><author>xsyfl</author><pubDate>Mon, 17 Apr 2017 19:48:00 +0800</pubDate><description><![CDATA[状态模式：
状态模式定义：
状态模式（State）:当一个对象的内在状态改变时允许改变其行为，这个对象看起来像改变了其子类。
状态模式UMl类图：



状态模式Java代码实现
public class Context {
	//定义一个状态，并且设置该状态可以读写
	private State state;
	public State getState() {
		return]]></description><category></category></item><item><title><![CDATA[大话设计模式读书笔记（十二） 抽象工厂模式]]></title><link>https://blog.youkuaiyun.com/xsyfl/article/details/70197684</link><guid>https://blog.youkuaiyun.com/xsyfl/article/details/70197684</guid><author>xsyfl</author><pubDate>Sun, 16 Apr 2017 20:17:14 +0800</pubDate><description><![CDATA[抽象工厂模式：
书中通过小菜的公司因为新的项目需求，需要将原来的SQL SERVER改为Access，而引出需求。写一个数据访问（“新增用户”，“得到用户”），假设只有name和Id 两个字段。
未使用设计模式代码：
用户类public class User {
	private String name;
	private String id;
	public String getName(]]></description><category></category></item><item><title><![CDATA[大话设计模式读书笔记（十一） 观察者模式]]></title><link>https://blog.youkuaiyun.com/xsyfl/article/details/70196143</link><guid>https://blog.youkuaiyun.com/xsyfl/article/details/70196143</guid><author>xsyfl</author><pubDate>Sun, 16 Apr 2017 16:21:51 +0800</pubDate><description><![CDATA[观察者模式：
书中通过小菜描述同事在公司看股票行情，并请求前台帮忙在老板回来时提醒同事，引出需求。将前台通知同事老板回来的事写成程序。
未用模式实现：
//前台类
public class Secretary {
	private List observers = new ArrayList();
	private String action;
	//添加同事
	public void at]]></description><category></category></item><item><title><![CDATA[大话设计模式读书笔记（十） 建造者模式]]></title><link>https://blog.youkuaiyun.com/xsyfl/article/details/70195437</link><guid>https://blog.youkuaiyun.com/xsyfl/article/details/70195437</guid><author>xsyfl</author><pubDate>Sun, 16 Apr 2017 14:31:35 +0800</pubDate><description><![CDATA[建造者模式
建造者模式（Builder）：
将一个复杂对象的构建与他的表示分离，使同样的构建过程可以创建不同的表示。

建造者模式UMl类图：






建造者模式简单代码实现：
具体产品类
public class Product {
	//产品部件
	private List parts = new ArrayList();
	//添加产品部件
	public vo]]></description><category></category></item><item><title><![CDATA[大话设计模式读书笔记（九） 外观模式]]></title><link>https://blog.youkuaiyun.com/xsyfl/article/details/70176273</link><guid>https://blog.youkuaiyun.com/xsyfl/article/details/70176273</guid><author>xsyfl</author><pubDate>Fri, 14 Apr 2017 21:39:55 +0800</pubDate><description><![CDATA[外观模式：]]></description><category></category></item><item><title><![CDATA[大话设计模式读书笔记（八） 模板方法模式]]></title><link>https://blog.youkuaiyun.com/xsyfl/article/details/70175865</link><guid>https://blog.youkuaiyun.com/xsyfl/article/details/70175865</guid><author>xsyfl</author><pubDate>Fri, 14 Apr 2017 20:49:45 +0800</pubDate><description><![CDATA[模板方法模式：
模板方法模式：定义一个操作中的算法的骨干，而将一些步骤延迟到子类中去。模板方法模式使得子类可以不改变一个算法的接口即可以重定义该算法的某些特定步骤。
模板方法模式UML类图：



模板方法模式Java代码实现：
public abstract class AbstractClass {
	
	public abstract void operation1();
	p]]></description><category></category></item><item><title><![CDATA[大话设计模式读书笔记（七） 原型模式]]></title><link>https://blog.youkuaiyun.com/xsyfl/article/details/69681371</link><guid>https://blog.youkuaiyun.com/xsyfl/article/details/69681371</guid><author>xsyfl</author><pubDate>Sat, 08 Apr 2017 17:31:18 +0800</pubDate><description><![CDATA[原型模式（Prototype）：
书中通过小菜要去面试，需要打印简历。而引出了需求。 需要小菜写一份简历类，要求有姓名，年龄，性别。可以设置工作经历，并且需要三份简历。
未使用设计模式代码：
package Prototype.NoPattern;

public class Resume {
	private String name;//姓名
	private int age; //年龄]]></description><category></category></item><item><title><![CDATA[大话设计模式读书 笔记（六） 工厂方法模式]]></title><link>https://blog.youkuaiyun.com/xsyfl/article/details/69676908</link><guid>https://blog.youkuaiyun.com/xsyfl/article/details/69676908</guid><author>xsyfl</author><pubDate>Sat, 08 Apr 2017 16:31:40 +0800</pubDate><description><![CDATA[工厂方法模式（Factory Method）
书中通过一个学雷锋的例子，来引出工厂方法模式。
工厂方法模式：定义了一个用于创建对象的接口，让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。


工厂方法模式UMl类图：






工厂方法模式代码：
public abstract class LeiFeng { //要创建的对象的接口，这里因为要创建的对象]]></description><category></category></item><item><title><![CDATA[大话设计模式读书笔记（五） 代理模式]]></title><link>https://blog.youkuaiyun.com/xsyfl/article/details/69483029</link><guid>https://blog.youkuaiyun.com/xsyfl/article/details/69483029</guid><author>xsyfl</author><pubDate>Thu, 06 Apr 2017 20:58:58 +0800</pubDate><description><![CDATA[上篇内容说到小菜去和娇娇约会，在本章中，小菜约会回来，和大鸟谈到娇娇是有男朋友的。并且聊到了娇娇的男朋友在追娇娇的过程。通过帮助卓贾谊同学东西的方法追求到了娇娇。而引出了代理模式。
代理模式Proxy：
代理模式（Proxy）：为其他对象提供一种代理，已控制这种对这个对象的访问。
代理模式UMl类图：




代理模式代码如下：
//接口
public interface Sub]]></description><category></category></item><item><title><![CDATA[大话设计模式读书笔记（四） 装饰模式]]></title><link>https://blog.youkuaiyun.com/xsyfl/article/details/69332489</link><guid>https://blog.youkuaiyun.com/xsyfl/article/details/69332489</guid><author>xsyfl</author><pubDate>Wed, 05 Apr 2017 20:17:28 +0800</pubDate><description><![CDATA[装饰模式、IO流中的装饰模式。]]></description><category></category></item><item><title><![CDATA[大话设计模式读书笔记（三） 单一职责原则和开放-封闭原则和依赖倒转原则]]></title><link>https://blog.youkuaiyun.com/xsyfl/article/details/68929607</link><guid>https://blog.youkuaiyun.com/xsyfl/article/details/68929607</guid><author>xsyfl</author><pubDate>Fri, 31 Mar 2017 19:57:53 +0800</pubDate><description><![CDATA[大多数时候，一件产品简单一些，职责单一一些。或许是更好的选择
单一职责原则：
就一个类而言，应该有且仅有一个引起它变化的原因。


如果一个类承担的职责过多，就等于把这些职责耦合在一起，一个职责的变化可能会削弱或抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计，当变化发生时，设计会遭到意想不到的破坏。
如果你能想到多于一个的动机去改变这一个类，那么这个类就有多于一个的职责，就应该]]></description><category></category></item><item><title><![CDATA[大话设计模式读书笔记（二） 策略模式]]></title><link>https://blog.youkuaiyun.com/xsyfl/article/details/68500354</link><guid>https://blog.youkuaiyun.com/xsyfl/article/details/68500354</guid><author>xsyfl</author><pubDate>Thu, 30 Mar 2017 21:01:08 +0800</pubDate><description><![CDATA[书中通过一道题目，让"小菜"设计一个商场收银软件，营业员根据客户购买商品的数量及单价，想客户收费。，并且软件可以兼容打折，返点等优惠活动的金额计算。
一开始，小菜使用之前所学的简单工厂模式来制作这个收银软件。
收费父类
public abstract class CashSuper {
	/**
	 * 收费方法
	 * @param money //原价
	 * @return
	 */
]]></description><category></category></item><item><title><![CDATA[Java NIO（一） 初步理解NIO]]></title><link>https://blog.youkuaiyun.com/xsyfl/article/details/66478808</link><guid>https://blog.youkuaiyun.com/xsyfl/article/details/66478808</guid><author>xsyfl</author><pubDate>Sun, 26 Mar 2017 20:33:33 +0800</pubDate><description><![CDATA[Java NIO(New IO)是一个可以替代标准Java IO API的IO API（从Java 1.4开始)，Java NIO提供了与标准IO不同的IO工作方式。


为什么要使用 NIO?

NIO 的创建目的是为了让 Java 程序员可以实现高速 I/O 而无需编写自定义的本机代码。NIO 将最耗时的 I/O 操作(即填充和提取缓冲区)转移回操作系统，因而可以极大地提高速度。
]]></description><category></category></item><item><title><![CDATA[大话设计模式读书笔记(一)  简单工厂模式]]></title><link>https://blog.youkuaiyun.com/xsyfl/article/details/65950823</link><guid>https://blog.youkuaiyun.com/xsyfl/article/details/65950823</guid><author>xsyfl</author><pubDate>Sat, 25 Mar 2017 21:12:48 +0800</pubDate><description><![CDATA[简单工厂模式：简单工厂模式，又叫做静态工厂模式。是指通过专门定义一个类来创建其他类的实例。
 在文中，小菜需要开发一个计算器程序。而为了方便维护，扩展和复用，引出了简单工厂模式。
所有的计算方法，加减乘除等，都有一个计算方法工厂来创建。当需要添加新的方法时，我们只需要添加新的方法类（继承运算类），并在工厂中添加判断语句即可。
UML图如下：






代码如下：
//运算类]]></description><category></category></item><item><title><![CDATA[多线程设计模式（一） Single Threaded Execution]]></title><link>https://blog.youkuaiyun.com/xsyfl/article/details/65936704</link><guid>https://blog.youkuaiyun.com/xsyfl/article/details/65936704</guid><author>xsyfl</author><pubDate>Sat, 25 Mar 2017 14:41:48 +0800</pubDate><description><![CDATA[这里有一座独木桥。因为桥身非常的细，一次只能允许一个人通过。当这个人没有下桥，另一个人就不能过桥。如果桥上同时又两个人，桥就会因为无法承重而破碎而掉落河里。 这就是Single Threaded Execution。有时也称为Critical section(临界区)。
这个模式用来限制同时只允许一个线程运行。
首先，我们先来看一个应该使用该设计模式，但是却没有使用的案例：
在这里要写一个程]]></description><category></category></item></channel></rss>