JAVA学习-第四个代码模型

第四个代码模型:接口应用

在现实生活之中经常会遇见如下的几种情况:

· 在一片森林之中有多种树木;

· 在商场之中有多种商品;

· 在一个停车场里停放着多种车辆,例如:卡车、轿车、摩托车、自行车。

下面模拟以上的一个场景。现在有间超市,在超市之中提供有多种商品,现在要求实现商品的上架销售和下架的功能,同时可以根据关键字查询出商品的信息。本程序只要求描述出类的结构即可。

范例:定义商品标准


interface Goods {         // 商品

public String getName() ;

public double getPrice() ;

}

范例:定义超市类


class SuperMarket {     // 超市

private Link goods ;      // 所有的商品

public SuperMarket() {

this.goods = new Link() ;      // 准备出存放商品的空间

}

public void insert(Goods g) {         // 增加商品

this.goods.add(g) ;        // 保存数据到链表

}

public void delete(Goods g) {         // 下架

this.goods.remove(g) ;  // 从链表删除数据

}

public Link search(String keyWord) {

Link result = new Link() ;

Object obj [] = this.goods.toArray() ;

for (int x = 0 ; x < obj.length ; x ++) {

Goods gd = (Goods) obj[x] ;

if (gd.getName().contains(keyWord)) {    // 符合查找条件

result.add(gd) ;    // 保存商品查询结果

}

}

return result ;

}

public Link getGoods() {       // 取得本超市之中的所有商品

return this.goods ;

}

}

范例:定义商品数据


class Cup implements Goods {

private String name ;

private double price ;

public Cup(){}

public Cup(String name,double price){

this.name = name ;

this.price = price ;

}

public String getName() {

return this.name ;

}

public double getPrice() {

return this.price ;

}

public boolean equals(Object obj) {

if (obj == null) {

return false ;

}

if (this == obj) {

return true ;

}

if (!(obj instanceof Cup)) {

return false ;

}

Cup cup = (Cup) obj ;

if (this.name.equals(cup.name) && this.price == cup.price) {

return true ;

}

return false ;

}

public String toString() {

return "【杯子】名称 = " + this.name + ",价格:" + this.price ;

}

}


class Computer implements Goods {

private String name ;

private double price ;

public Computer(){}

public Computer(String name,double price){

this.name = name ;

this.price = price ;

}

public String getName() {

return this.name ;

}

public double getPrice() {

return this.price ;

}

public boolean equals(Object obj) {

if (obj == null) {

return false ;

}

if (this == obj) {

return true ;

}

if (!(obj instanceof Computer)) {

return false ;

}

Computer com = (Computer) obj ;

if (this.name.equals(com.name) && this.price == com.price) {

return true ;

}

return false ;

}

public String toString() {

return "【电脑】名称 = " + this.name + ",价格:" + this.price ;

}

}

此时电脑和杯子没有本质的联系,但是他们都属于商品。


public class TestDemo {

public static void main(String args[]) {

SuperMarket market = new SuperMarket() ;

market.insert(new Cup("卡通杯",10.0)) ;

market.insert(new Cup("保温杯",20.0)) ;

market.insert(new Cup("冷水杯",32.0)) ;

market.insert(new Computer("限量版卡通电脑",3200.0)) ;

market.insert(new Computer("殴打杯纪念电脑",99200.0)) ;

market.insert(new Computer("不怕水的电脑",39200.0)) ;

market.delete(new Cup("卡通杯",10.0)) ;

Object obj [] = market.search("卡通").toArray() ;

for (int x = 0 ; x < obj.length ; x ++) {

System.out.println(obj[x]) ;

}

}

}

本程序就是一个典型的面向接口的编程,不同类之间依靠接口进行连接。

时间: 2024-10-10 21:05:31

JAVA学习-第四个代码模型的相关文章

Java学习笔记四(代码块 )

1 代码块的分类:java中的代码块是指使用{}括起来的一段代码,根据位置不同可以分为四种: 普通代码块 构造快 静态代码块 同步代码块 今天主要学习前三种代码块,同步代码块在学习到多线程部分的时候再加学习. 2 普通代码块:直接定义在方法中的代码块,如下: public class CodeSpace { public static void main(String args[]){ { int x = 30; System.out.println("普通代码块x="+x); } /

JAVA学习-第三个代码模型

第三个代码模型:对象比较 在讲解具体的概念之前,再来观察一种引用传递的形式,本类接收本类对象. 范例:观察程序代码(暂时不要去思考代码意义) class Person { private String name ; public Person(String name) { this.name = name ; }       // 接收本类对象          public void change(Person temp) {                    temp.name = "李

java学习(四)代码的设计

一.目的 1.为了使程序员编写的代码更加的简洁,使人阅读起来更加流畅 2.将运算代码与界面代码完全分离开来,利于团队开发,提高团队之间的工作效率 3. 在很短的时间内可以替换整个站点的外观: 4.使程序员可以抽象编程,而无须接触HTML代码: 5.可以重复利用以前的模板. 二.示例 引用前一篇的记忆曲线的JSP文件 1.未进行分离的代码 1 <%@ page language="java" contentType="text/html; charset=UTF-8&qu

Java学习 - 第五个代码模型:异常处理结构

到现在为止已经清楚了异常的基本处理形式,但是遗留的两个问题:finally无用.throw无用,那么为了更好的解释这两个操作的含义,给出一个异常处理的标准结构. 范例:现在要求定义一个div()方法(定义在MyMath类里面),这个方法开发要求如下: · 此方法之中所有出现的异常一定要交给被调用处进行处理: · 在进行除法计算开始首先要输出一行提示信息“1.除法计算开始,打开计算功能”: · 在除法计算进行完毕之后也要输出一行提示信息“2.除法计算结束,关闭计算功能”: 在所有的开发之中,首先一

从.Net到Java学习第四篇——spring boot+redis

从.Net到Java学习第一篇——开篇 从.Net到Java学习第二篇——IDEA and start spring boot 从.Net到Java学习第三篇——spring boot+mybatis+mysql 接上一篇,本篇使用到的框架redis.FastJSON. 环境准备 安装redis,下图是我本机的redis绿色版,你可以网上自行下载安装,如果不知道如何怎么操作,可以移步到我的另一篇文章:ASP.NET Redis 开发 以管理员身份打开CMD窗口: C:\Users\zouqj>e

JAVA学习笔记(四十二)-生产者消费者模型

wait().notify() /* * wait().notify() * * 1.两个方法都只能在synchronized代码块中执行,因为要对持有锁的线程操作,只有同步中才有锁 * 2.两个方法在操作同步中的线程时,必须要标识所操作线程持有的对象锁 * 3.等待和唤醒必须是同一个对象锁 */ public class Test05 { public static void main(String[] args) { MyThread3 mt=new MyThread3(); Thread

Java学习之:JVM内存模型

一.文章来由 开始实习啦,实习转战Java开发工程师... 二.JVM内存模型总图 Java中通过多线程机制使得多个任务同时执行处理,所有的线程共享JVM内存区域main memory,而每个线程又单独的有自己的工作内存,当线程与内存区域进行交互时,数据从主存拷贝到工作内存,进而交由线程处理(操作码+操作数). 在之前,我们也已经提到,JVM的逻辑内存模型如下: 三.JVM内存模型详解 1.程序计数器 程序计数器(Program Counter Register)是一块较小的内存空间,它的作用可

java学习笔记四:static的几个角落及小谈多态

最近有点事情,没有及时更新笔记,学习不可弃,总结一下最近的学习,其中重点是static的一些应用,多态是一种设计理念,了解较容易,想如火纯清的确不是一件容易的事情. 对于static,主要有两点是我所学习的. 1.首先简单的介绍一下static的定义.static是静态的意思,就是说这个类变量或者类方法不需要实例化就可以使用.使用static的变量是类变量,也成为静态域(static field).这些是static的基本语义,了解了这些,继续向下看. java核心技术(卷一)对于静态有这样一段

JAVA学习第四十九课 — IO流(三):缓冲区2 &amp; 装饰设计模式

一.模拟BufferedReader 自定义MyBuffereaReader 对于缓冲区而言,里面其实就是封装一个数组,对外提供方法对数组的操作,这些方法最终操作的都是数组的角标 原理:从源中取出数据存入缓冲区,再从缓冲区不断的取出数据,取完后,继续从源中继续取数据,进缓冲区,直至源中的数据取完,用-1做为结束标记 import java.io.*; class MyBufferedReader { private FileReader fr; //定义数组作为缓冲区 private char[