SSM之Spring框架--->>墨盒案例

分析:

程序中包括打印机(Printer)、墨盒(Ink)、和纸张(Paper)、三类组件

首先创建一个新项目文件Spring_Box

我们来定义墨盒和纸张的接口类

墨盒接口Ink.java文件内容如下:

package entiey;

public interface Ink {
    /**
     * 定义打印采用的颜色的方法
     * r(红色)
     * g(绿色)
     * b(蓝色)
     */
    public String getColor(int r,int g,int b);

}

纸张接口Paper.java文件内容如下:

package entiey;

public interface Paper {
    /**
     * 纸张接口
     */
    public static final String newine="
";
    //输入一个字符到纸张
    public void putInChar(char c);
    //得到输出到纸张上的内容
    public String getContent();
    

}

这时候我们创建一个printer包名来写Printer程序:

package printer;

import entiey.Ink;
import entiey.Paper;

/**
 * 打印机程序
 * @author ASUS
 *
 */
public class Printer {
    //面向接口编程,而不是具体的实现类
    private Ink ink=null;
    private Paper paper=null;
    /**
     * 设置注入所需的setter方法
     */
    public void setInk(Ink ink) {
        this.ink = ink;
    }

    public void setPaper(Paper paper) {
        this.paper = paper;
    }
    /**
     * 设置打印机打印方法
     */
    public void print(String str) {
        //输出颜色标记
        System.out.println("使用"+ink.getColor(255, 200, 0)+"颜色打印:
");
        //逐字符输出到纸张
        for(int i=0;i<str.length();++i) {
            paper.putInChar(str.charAt(i));
        }
        //将纸张的内容输出
        System.out.print(paper.getContent());
    }
}

然后我们开始实现墨盒(Ink)和纸张(Paper)的接口实现类

ColorInk.java文件内容如下:

package entiey;

import java.awt.Color;

public class ColorInk implements Ink{
//打印采用彩色
    /**
     * 彩色墨盒,ColorInk实现Ink接口
     */
    @Override
    public String getColor(int r, int g, int b) {
        Color color =new Color(r,g,b);
        return "#"+Integer.toHexString(color.getRGB()).substring(2);
    }

}

GreyInk.java文件内容如下:

package entiey;

import java.awt.Color;

public class GreyInk implements Ink{
/**
 * 灰色墨盒,GreyInk实现Ink接口
 */
    @Override
    public String getColor(int r, int g, int b) {
        int c=(r+g+b)/3;
        Color color=new Color(c,c,c);
        return "#"+Integer.toHexString(color.getRGB()).substring(2);
    }

}

TextPaper.java文件内容如下:

package entiey;

public class TextPaper implements Paper{

    //每行字符数
    private int charPerLine=16;
    //每页行数
    private int linePerPage=5;
    //纸张中的内容
    private String content="";
    //当前横向位置,从0到charPerLine-1
    private int posX=0;
    //当前行数,从0到linePerPage-1
    private int posY=0;
    //当前页数
    private int posP=1;
    
    @Override
    public void putInChar(char c) {
        content+=c;
        ++posX;
        //判断是否换行
        if(posX==charPerLine) {
            content+=Paper.newine;
            posX=0;
            ++posY;
        }
        //判断是否翻页
        if(posY==linePerPage) {
            content+="==第"+posP+"页==";
            content+=Paper.newine+Paper.newine;
            posY=0;
            ++posP;
        }
    }

    @Override
    public String getContent() {
        String ret=this.content;
        //补齐本页空行,并显示页码
        if(!(posX==0&&posY==0)) {
            int count=linePerPage-posY;
            for(int i=0;i<count;++i) {
                ret+=Paper.newine;
            }
            ret+="==第"+posP+"页==";
        }
        return ret;
    }

//setter方法
    public void setCharPerLine(int charPerLine) {
        this.charPerLine = charPerLine;
    }

    public void setLinePerPage(int linePerPage) {
        this.linePerPage = linePerPage;
    }
}

开始配置XML文件applicationContext.xml文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans 
       http://www.springframework.org/schema/beans/spring-beans-3.2.xsd">
       
       <!-- 定义彩色墨盒Bean,id是ColorInk -->
       <bean id="colorInk" class="entiey.ColorInk"/>
       <!-- 定义灰色墨盒Bean,id是GreyInk -->
       <bean id="greyInk" class="entiey.GreyInk"/>
           <!-- 定义A4纸张Bean,id是a4Paper -->
           <!-- 通过setCharPerLine()方法为charPerLine属性注入每行字符数 -->
           <!-- 通过setLinePerPage()方法为linePerPage属性注入每页行数 -->
       <bean id="a4Paper" class="entiey.TextPaper">
           <property name="charPerLine" value="10"/>
           <property name="linePerPage" value="8"/>
       </bean>
       <!-- 定义B5纸张Bean,id是b5Paper -->
       <bean id="b5Paper" class="entiey.TextPaper">
           <property name="charPerLine" value="6"/>
            <property name="linePerPage" value="5"/>
       </bean>
       <!-- 组装打印机,定义打印机Bean该Bean的id是printer.class指定该Bean实例的实现类 -->
       <bean id="printer" class="printer.Printer">
           <!-- 通过ref属性注入已经定义好的Bean -->
           <!-- 注入彩色墨盒 -->
           <property name="ink" ref="colorInk"/>
           <!-- 注入灰色墨盒 -->
           <property name="paper" ref="b5Paper"/>
       </bean>
</beans>

最后我们通过测试类测试我们的代码运行结果如何

创建test包

testa.java文件内容如下:

package test;
/**
 * 测试打印机
 * @author ASUS
 *
 */
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import printer.Printer;

public class testa {
    @Test
    public void m1() {
        ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
        //通过Printer bean的id来获取Printer实例
        Printer printer=(Printer) context.getBean("printer");
        String content="欸 朋友们好啊" + 
                "我是浑元形意太极门掌门人马保国" + 
                "刚才有个朋友问我" + 
                "马老师发生什么事啦" + 
                "我说怎么回事" + 
                "给我发了几张截图"
                +"我一看" + 
                "哦" + 
                "原来是昨天 "+ 
                "有两个年轻人" + 
                "三十多岁" + 
                "一个体重九十多公斤" + 
                "一个体重八十多公斤" + 
                "他们说" + 
                "欸" + 
                "有一个说是" + 
                "我在健身房练功" + 
                "颈椎练坏了" + 
                "马老师你能不能教教我浑元功法" + 
                "欸" + 
                "帮助治疗一下我的颈椎病" + 
                "我说可以" + 
                "我说你在健身房练死劲儿不好用" + 
                "他不服气" + 
                "欸" + 
                "我说小朋友" + 
                "你两个手来折我一个手指头" + 
                "他折不动" + 
                "他说你这也没用" + 
                "我说我这有用" + 
                "这是化劲儿" + 
                "传统功夫是讲化劲儿的" + 
                "四两拨千斤" + 
                "二百多斤的英国大力士" + 
                "都握不动我这一个手指" + 
                "他说要和我试试" + 
                "我说可以" + 
                "欸" + 
                "我一说他啪一下就站起来了" + 
                "很快啊" + 
                "然后上来就是" + 
                "一个左正蹬" + 
                "一个右鞭腿" + 
                "一个左刺拳" + 
                "我全部防出去了啊" + 
                "防出去以后自然是" + 
                "传统功夫以点到为" + 
                "右拳放在他鼻子上" + 
                "没打他" + 
                "我笑一下" + 
                "准备收拳" + 
                "因为这时间" + 
                "按照传统功夫的点到为止" + 
                "他就输了" + 
                "如果我这一拳发力" + 
                "一拳就把他鼻子打骨" + 
                "放在他鼻子上没用打他" + 
                "他也承认" + 
                "我先打到他面部" + 
                "他不知道拳放在他鼻子上" + 
                "他承认我先打到他面部啊" + 
                "我收拳的时间不打了" + 
                "他突然袭击左刺拳来打我脸" + 
                "啊" + 
                "我大意了啊" + 
                "没有闪" + 
                "欸" + 
                "他的左拳给我眼" + 
                "给我右眼蹭了一下" + 
                "但没关系啊" + 
                "他也说" + 
                "他结束也说了" + 
                "两分多钟以后" + 
                "当时流眼泪了捂着眼" + 
                "我说停停" + 
                "然后两分钟以后" + 
                "两分多钟以后" + 
                "就好了" + 
                "我说小伙子你不讲武德你不懂" + 
                "他说马老师对不起对不起" + 
                "我不懂规矩" + 
                "啊" + 
                "我是" + 
                "他说他是乱打的" + 
                "他可不是乱打的啊" + 
                "正蹬" + 
                "鞭腿" + 
                "左刺拳" + 
                "训练有素" + 
                "后来他说他练过三四年泰拳啊" + 
                "看来是有备而来" + 
                "这两个年轻人" + 
                "不讲武德" + 
                "来" + 
                "骗" + 
                "来" + 
                "偷袭" + 
                "我69岁" + 
                "老同志" + 
                "这好吗" + 
                "这不好" + 
                "我劝" + 
                "这位" + 
                "年轻人" + 
                "好自为之" + 
                "好好反思" + 
                "不要再犯这样的聪明" + 
                "小聪明" + 
                "啊" + 
                "额" + 
                "武林要以和为贵" + 
                "要讲武德" + 
                "不要搞" + 
                "窝里斗" + 
                "谢谢朋友们";
                printer.print(content);
            }
            
        
        }

我们来看看我们的运行结果如下:

 好了测试成功这就是我们所需要的墨盒案例了,这里要注意!一定要导入jar包

原文地址:https://www.cnblogs.com/beiweihaohao/p/14083909.html