<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[jiahuier的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/jiahuier</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; jiahuier]]></copyright><item><title><![CDATA[设计模式(Java)----访问者模式Visitor]]></title><link>https://blog.youkuaiyun.com/jiahuier/article/details/106734674</link><guid>https://blog.youkuaiyun.com/jiahuier/article/details/106734674</guid><author>jiahuier</author><pubDate>Sat, 13 Jun 2020 17:00:20 +0800</pubDate><description><![CDATA[例题：校长和院长检查教师和学生
校长和院长检查教师的工作情况和学生的学习情况，
校长关注教师的教学工作量，学生学习的课程；
院长关注教师的课程，学生的学习成绩。
由于校长和院长对于教师和学生的关注点是不一样的，这就需要对教师和学生进行不同的处理
教师的工作和学生的学习相对稳定，访问者和处理方式多种多样。如何在不更改数据元素结构(教师的工作和学生的学习)的前提下，在运行时根据需要透明地为其动态添加新的操作？


import java.util.ArrayList;
import java.util.List]]></description><category></category></item><item><title><![CDATA[设计模式(Java)----命令模式Order]]></title><link>https://blog.youkuaiyun.com/jiahuier/article/details/106647673</link><guid>https://blog.youkuaiyun.com/jiahuier/article/details/106647673</guid><author>jiahuier</author><pubDate>Tue, 09 Jun 2020 18:30:42 +0800</pubDate><description><![CDATA[例题1：在街边的烧烤摊点餐场景：直接和老板说需要点什么


class Barbecuer{
	//烤羊肉
	public void BakeMutton() {
		System.out.println("烤羊肉串！");
	}
	//烤鸡翅
	public void BakeChickenWing() {
		System.out.println("烤鸡翅！");
	}
}
public  class Main{
	public static void main(String[] args){
		Ba]]></description><category></category></item><item><title><![CDATA[设计模式(Java)----职责链模式Chain of Responsibility]]></title><link>https://blog.youkuaiyun.com/jiahuier/article/details/106647506</link><guid>https://blog.youkuaiyun.com/jiahuier/article/details/106647506</guid><author>jiahuier</author><pubDate>Tue, 09 Jun 2020 17:37:22 +0800</pubDate><description><![CDATA[定义：使多个对象都有机会处理请求，从而避免请求的发送者和接收者之间的耦合关系，将这些对象连成一条链，并沿这条链传递请求，直到有一个对象处理它为止。例题：加薪申请、上报与审批
员工向经理发起加薪申请，经理无权决定，需要向总监汇报，如果加薪额度超过总监权力范围，需要向总经理汇报。
员工还可以提交请假申请，经理可以决定2天以下的假，总监可以决定5天以下的假，其余都要上报总经理。加薪代码初步


//申请：小菜请求加薪2000/小菜请假3天
class Request{
	private String reques]]></description><category></category></item><item><title><![CDATA[设计模式(Java)----组合模式Composite]]></title><link>https://blog.youkuaiyun.com/jiahuier/article/details/106523380</link><guid>https://blog.youkuaiyun.com/jiahuier/article/details/106523380</guid><author>jiahuier</author><pubDate>Wed, 03 Jun 2020 15:08:16 +0800</pubDate><description><![CDATA[例题：

商品类别树
+服装
 +男装
  -衬衣
  -夹克
 +女装
  -裙子
  -套装

特点：
1、有一个根节点
2、树枝节点
3、叶子结点
根节点和树枝节点都可以包含其他节点，统称为容器节点。
现在需要管理商品类别树，假设要求能实现输出如上商品类别树的结构功能，应该如何实现？不带模式的解决方案：组合对象


import java.util.ArrayList;
import java.util.Collection;

class Leaf{
	private Strin...]]></description><category></category></item><item><title><![CDATA[设计模式(Java)----备忘录模式Memento]]></title><link>https://blog.youkuaiyun.com/jiahuier/article/details/106521965</link><guid>https://blog.youkuaiyun.com/jiahuier/article/details/106521965</guid><author>jiahuier</author><pubDate>Wed, 03 Jun 2020 13:18:48 +0800</pubDate><description><![CDATA[例题：
游戏进度
遇到大boss的时候都会保存一下进度：游戏角色的生命力，攻击力，防御力等的数据。如果：打过了就不需要恢复记录，打不过就复原到刚刚保存的记录重新打一遍boss，直到打死为止。


class GameRole{
	int Vitality;//体力
	int Attack;//攻击力
	int Defense;//防御力
	public int getVitality() {
		return Vitality;
	}
	public void setVitality(int vitalit]]></description><category></category></item><item><title><![CDATA[设计模式(Java)----状态模式State]]></title><link>https://blog.youkuaiyun.com/jiahuier/article/details/106412414</link><guid>https://blog.youkuaiyun.com/jiahuier/article/details/106412414</guid><author>jiahuier</author><pubDate>Thu, 28 May 2020 20:17:56 +0800</pubDate><description><![CDATA[人、事物在不同状态下会有不同表现，而一个状态又会在不同的表现下转移到下一个不同的状态。例题：
工作状态的变化
上午状态好，中午想睡觉，下午渐恢复，加班苦煎熬。


class Work{
	private int hour;
	private Boolean finish=false;
	public int getHour() {
		return hour;
	}
	public void setHour(int hour) {
		this.hour = hour;
	}
	public Boolea]]></description><category></category></item><item><title><![CDATA[设计模式(Java)----观察者模式Observer]]></title><link>https://blog.youkuaiyun.com/jiahuier/article/details/106411679</link><guid>https://blog.youkuaiyun.com/jiahuier/article/details/106411679</guid><author>jiahuier</author><pubDate>Thu, 28 May 2020 19:33:08 +0800</pubDate><description><![CDATA[问题引入：办公时间做与工作无关的事情，在老板到来时，前台负责通知好友进入工作状态.


import java.util.ArrayList;
class Secretary{//前台秘书类
	private ArrayList&lt;StockObserver&gt;observers=new ArrayList&lt;StockObserver&gt;();
	private String action;
	public void Attach(StockObserver observer) {
		o]]></description><category></category></item><item><title><![CDATA[设计模式(Java)----模板方法模式Template Method]]></title><link>https://blog.youkuaiyun.com/jiahuier/article/details/106122901</link><guid>https://blog.youkuaiyun.com/jiahuier/article/details/106122901</guid><author>jiahuier</author><pubDate>Thu, 14 May 2020 16:33:48 +0800</pubDate><description><![CDATA[例题：标准化考试，考试题目相同，每个人的解答不同。


class TestPaper{
	public void TextQuestion1() {
		System.out.println("问题一");
		System.out.println("答案："+Answer1());
	}
	public void TextQuestion2() {
		System.out.println("问题二");
		System.out.println("答案："+Answer2());
	}
	public]]></description><category></category></item><item><title><![CDATA[设计模式(Java)----策略模式Strategy Pattern]]></title><link>https://blog.youkuaiyun.com/jiahuier/article/details/106121848</link><guid>https://blog.youkuaiyun.com/jiahuier/article/details/106121848</guid><author>jiahuier</author><pubDate>Thu, 14 May 2020 16:27:22 +0800</pubDate><description><![CDATA[例题：做一个商场收银软件，营业员根据客户购买商品单价和数量，向客户收费。




import java.util.Scanner;

class Cash{
	public String list="";
	public Double totalPrice=0.00;
	public void buttonOK() {
		Scanner sc=new Scanner(System.in);
		System.out.println("输入单价：");
		String price=sc.nextLine]]></description><category></category></item><item><title><![CDATA[设计模式(Java)----装饰模式Decorator]]></title><link>https://blog.youkuaiyun.com/jiahuier/article/details/105968963</link><guid>https://blog.youkuaiyun.com/jiahuier/article/details/105968963</guid><author>jiahuier</author><pubDate>Thu, 07 May 2020 14:42:24 +0800</pubDate><description><![CDATA[如何使“对象功能的扩展”能够根据需要来动态地实现?同时避免“扩展功能的增多”带来的子类膨胀问题?从而使得任何“功能扩展变化”所导致的影响降为最低?

例题1：人及其属性

人有不同国家，如中国人、美国人，如果有属性：高和富，则有组合： 高、富、高富等共3个属性描述。

如果有属性：高、富、帅，则有组合：高、富、帅、高富、高帅、富帅、高富帅等共7个属性描述。???? + ???? + ???? ∗ ???????????? + ????????????...]]></description><category></category></item><item><title><![CDATA[设计模式(Java)----桥接模式Bridge]]></title><link>https://blog.youkuaiyun.com/jiahuier/article/details/105856529</link><guid>https://blog.youkuaiyun.com/jiahuier/article/details/105856529</guid><author>jiahuier</author><pubDate>Thu, 30 Apr 2020 10:52:38 +0800</pubDate><description><![CDATA[本质：分离抽象和实现例题：手机都有通讯录和游戏功能，M品牌手机和N品牌手机都有通讯录的增删改查功能和游戏功能。



手机品牌和手机软件之间的关系是手机品牌包含有手机软件，但软件并不是品牌的一部分，所以它们之间是聚合关系。



先来解释一个名词：脱耦
1、耦合:两个实体的行为的某种强关联。将它们的强关联去掉，就是耦合的解脱，或称脱耦。在这里，脱耦是指将抽象化和实现化之间的耦合解脱开，或者说...]]></description><category></category></item><item><title><![CDATA[设计模式(Java)----中介者模式Mediator]]></title><link>https://blog.youkuaiyun.com/jiahuier/article/details/105855981</link><guid>https://blog.youkuaiyun.com/jiahuier/article/details/105855981</guid><author>jiahuier</author><pubDate>Thu, 30 Apr 2020 10:42:25 +0800</pubDate><description><![CDATA[定义：用一个中介对象来封装(封装变化)一系列的对象交互中介者使各对象不需要显式的相互引用(编译时依赖→运行时依赖),从而使其耦合松散(管理变化),而A可以独立地改变它们之间的交互。，而是通过中介者对象来与另一个对象发生相互作用。

通过中介者模式，可以将复杂关系的网状结构变成结构简单的以中介者为核心的星形结构，每个对象不再和他与之关联的对象直接发生相互作用，而是通过中介者对象来与另一个对象发生相互...]]></description><category></category></item><item><title><![CDATA[设计模式(Java)----适配器模式Adapter]]></title><link>https://blog.youkuaiyun.com/jiahuier/article/details/105725356</link><guid>https://blog.youkuaiyun.com/jiahuier/article/details/105725356</guid><author>jiahuier</author><pubDate>Fri, 24 Apr 2020 10:36:09 +0800</pubDate><description><![CDATA[适配器模式：把一个类的接口变换成客户端所期待的另一种接口，从而使原本接口不匹配而无法在一起工作的两个类能够在一起一作。

适配者adaptee:需要适配的类。

适配器模式的两种形式：
类适配器模式：适配器与适配者之间是继承（或实现）关系。
对象适配器模式：适配器与适配者之间是关联关系。

下面主要介绍对象适配器模式：



客户端需要调用request()方法， 而适配者类Adaptee没有该方...]]></description><category></category></item><item><title><![CDATA[设计模式(Java)----外观（门面）模式Facade Pattern]]></title><link>https://blog.youkuaiyun.com/jiahuier/article/details/105724916</link><guid>https://blog.youkuaiyun.com/jiahuier/article/details/105724916</guid><author>jiahuier</author><pubDate>Fri, 24 Apr 2020 10:32:16 +0800</pubDate><description><![CDATA[外观模式：为子系统中的一组接口提供一个一致(稳定)的界面,Facade模式定义了一个高层接口，这个接口使得这一子系统更加容易使用(复用)。

例题：投资者买股票VS基金
由于众多投资者对众多股票的联系太多，反而不利于操作，而有了基金以后，变成众多用户只和基金打交道。实际上的操作却是基金经理人在与上千支股票和其他投资产品打交道。




class Stock1{
	//卖股票
	public vo...]]></description><category></category></item><item><title><![CDATA[设计模式(Java)----代理模式Proxy Pattern]]></title><link>https://blog.youkuaiyun.com/jiahuier/article/details/105724354</link><guid>https://blog.youkuaiyun.com/jiahuier/article/details/105724354</guid><author>jiahuier</author><pubDate>Fri, 24 Apr 2020 10:16:10 +0800</pubDate><description><![CDATA[例题1：卓佳易喜欢娇娇，但是娇娇并不认识卓佳易：
1.卓佳易给娇娇送花，送巧克力，送洋娃娃
2.卓佳易也可以找一个人，让这个人吧鲜花，巧克力和洋娃娃送给娇娇。
这是两种方式，但达到的目的是一样的。


class SchoolGirl{
	private String name;
	public String getName() {
		return name;
	}
	public void S...]]></description><category></category></item><item><title><![CDATA[设计模式(Java)----享元模式Flyweight]]></title><link>https://blog.youkuaiyun.com/jiahuier/article/details/105559893</link><guid>https://blog.youkuaiyun.com/jiahuier/article/details/105559893</guid><author>jiahuier</author><pubDate>Thu, 16 Apr 2020 16:35:08 +0800</pubDate><description><![CDATA[例题：有多个客户想要使用同样的网站但要求不太一样，有的希望是博客形式的，有的希望是产品图片说明形式的。
简单代码实现：


//网站类
class WebSite{
	private String name="";
	public WebSite(String name) {
		this.name=name;
	}
	public void Use() {
		System.out.printl...]]></description><category></category></item><item><title><![CDATA[设计模式(Java)----单例模式Singleton]]></title><link>https://blog.youkuaiyun.com/jiahuier/article/details/105556483</link><guid>https://blog.youkuaiyun.com/jiahuier/article/details/105556483</guid><author>jiahuier</author><pubDate>Thu, 16 Apr 2020 15:26:12 +0800</pubDate><description><![CDATA[例题：想要读取配置文件到内存，如何读取？


import java.io.IOException;
import java.util.Properties;

import org.omg.CORBA_2_3.portable.InputStream;

class AppConfig{
	private String parameterA;
	private String parameterB...]]></description><category></category></item><item><title><![CDATA[设计模式(Java)----建造者（生成器）模式Builder]]></title><link>https://blog.youkuaiyun.com/jiahuier/article/details/105415320</link><guid>https://blog.youkuaiyun.com/jiahuier/article/details/105415320</guid><author>jiahuier</author><pubDate>Thu, 09 Apr 2020 17:33:11 +0800</pubDate><description><![CDATA[将一个复杂对象的构建与它的表示分离，使得同样的构建过程可以创建不同的表示。
①一个对象会有一些重要的性质，在它没有恰当的值之前，对象不能作为一个完整的产品使用。
②一个对象的一些性质必须按照某个顺序赋值才有意义。一、用程序画一个小人，要求小人有头、身体、两手、两脚。

基本代码


import java.awt.*;
import java.awt.event.*;
class DrawPers...]]></description><category></category></item><item><title><![CDATA[设计模式(Java)----原型模式Prototype(包含深复制与浅复制)]]></title><link>https://blog.youkuaiyun.com/jiahuier/article/details/105413511</link><guid>https://blog.youkuaiyun.com/jiahuier/article/details/105413511</guid><author>jiahuier</author><pubDate>Thu, 09 Apr 2020 17:00:27 +0800</pubDate><description><![CDATA[例题：定义一个简历类，必须有姓名，可以设置性别和年龄，可以设置工作经历。最终需要写三份简历。

一、基本代码（我们一开始会想到的代码）


class Resume{
 private String name;
 private String sex;
 private String age;
 private String timeArea;
 private St...]]></description><category></category></item><item><title><![CDATA[设计模式(Java)----抽象工厂模式AbstractFactory]]></title><link>https://blog.youkuaiyun.com/jiahuier/article/details/105274392</link><guid>https://blog.youkuaiyun.com/jiahuier/article/details/105274392</guid><author>jiahuier</author><pubDate>Thu, 02 Apr 2020 17:45:12 +0800</pubDate><description><![CDATA[如何访问数据库？
基本的数据访问程序
class User{
	private int id;
	private String name;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id=id;
	}
	public String getName() {
		return name;
	}
	...]]></description><category></category></item></channel></rss>