我们设计一个在线销售系统,用户部分设计如下:
将用户分为,NormalUser, VipUser, InnerUser三种。
要求根据用户的不同折扣计算用户购买产品的价格。
并要求为以后扩展和维护预留空间。
用户部分先声明了一个接口User,用户都是User的实现。
User.php
<?
/*
* 定义了 User接口.
* 和子类 NormalUser,VipUser,InnerUser
*/
//User接口,定义了三个抽象方法.
interface User{
public function getName();
public function setName($_name);
public function getDiscount();
}
abstract class AbstractUser implements User{
private $name = ""; //名字
protected $discount = 0; //折扣
protected $grade = ""; //级别
public function __construct($_name){
$this->setName($_name);
}
public function getName(){
return $this->name;
}
public function setName($_name){
$this->name = $_name;
}
public function getDiscount(){
return $this->discount;
}
public function getGrade(){
return $this->grade;
}
}
class NormalUser extends AbstractUser {
protected $discount = 1.0;
protected $grade = "NormalUser";
}
class VipUser extends AbstractUser {
protected $discount = 0.8;
protected $grade = "VipUser";
}
class InnerUser extends AbstractUser {
protected $discount = 0.7;
protected $grade = "InnerUser";
}
?>
关于产品,我们进行了如下设计。
声明一个接口Product,然后从Product继承下Book接口。
在线销售的图书最后是实现了Book接口的BookOnline类。
Product.php
<?
/*与产品相关的类放.*/
Interface Product{ //定义产品接口
public function getProductName();
public function getProductPrice();
}
interface Book extends Product { // book是产品的一个分类
public function getAuthor();
}
class BookOnline implements Book{ // 定义book类.
private $productName; // 产品名
private $productPrice; // 产品价格
private $author; //作者
public function __construct($_bookName){
$this->productName = $_bookName;
//这里放置相关初始化的代码.
//与数据库关联的代码.
}
public function getProductName(){
return $this->productName;
}
public function getProductPrice(){
//这里从数据库读取价格.
//假设价格是 100元.
$this->productPrice = 100;
return $this->productPrice;
}
public function getAuthor(){
//从数据库里面取值.
return $this->author;
}
}
?>
关于结算,我们使用了独立的结算类,使用静态方法做计算。产品结算。注意参数类型。
ProductSettle.php
<?
include_once("User.php");
include_once("Product.php");
//买了产品到底多少钱呢?
class ProductSettle{
public static function finalPrice(User $_user,Product $_product,$number = 1){
$price = $_user->getDiscount() * $_product->getProductPrice() * $number;
return $price;
}
}
?>
下面的例子是实现。大家可以自己分析下。
<?
include_once("./class/User.php");
include_once("./class/Product.php");
include_once("./class/ProductSettle.php");
$number = 10;
$book = new BookOnline("设计模式");
$user = new NormalUser("Tom");
$price = ProductSettle::finalPrice($user,$book,$number);
$str = "您好,尊敬的用户 " . $user->getName() . " <br>";
$str .= "您的级别是 ". $user->getGrade() .", <br>";
$str .= "您的折扣是 " . $user->getDiscount() . "<br>";
$str .= "购买 $number 本 《 ". $book->getProductName() ;
$str .= "》的价格是 $price <br><br>";
echo $str;
$user = new vipUser("Tom");
$price = ProductSettle::finalPrice($user,$book,$number);
$str = "您好,尊敬的用户 " . $user->getName() . " <br>";
$str .= "您的级别是 ". $user->getGrade() .", <br>";
$str .= "您的折扣是 " . $user->getDiscount() . "<br>";
$str .= "购买 $number 本 《 ". $book->getProductName() ;
$str .= "》的价格是 $price <br><br>";
echo $str;
$user = new InnerUser("Tom");
$price = ProductSettle::finalPrice($user,$book,$number);
$str = "您好,尊敬的用户 " . $user->getName() . " <br>";
$str .= "您的级别是 ". $user->getGrade() .", <br>";
$str .= "您的折扣是 " . $user->getDiscount() . "<br>";
$str .= "购买 $number 本 《 ". $book->getProductName() ;
$str .= "》的价格是 $price <br><br>";
echo $str;
?>
分享到:
相关推荐
首先,我们需要了解PHP接口(API)的基本概念。API代表应用程序编程接口,它定义了软件系统之间交互的规则。在PHP中,我们通常通过HTTP协议创建RESTful API,这种API风格基于HTTP方法(GET、POST、PUT、DELETE等)来...
当我们谈论"PHP接口开发代码"时,我们通常是指通过PHP编写的服务端接口,这些接口可以接收客户端(如网页、移动应用)的请求,并返回所需的数据或执行特定的功能。 接口开发是现代Web应用程序的核心部分,它允许...
双乾网银支付网关PHP接口是专门为电商网站和在线服务提供商设计的一种支付解决方案,它允许用户通过他们的银行账户直接进行支付,简化了交易过程并提高了支付的安全性。这个接口通常包括一系列API调用,使得开发者...
"php接口文件"这个主题涉及的是如何使用PHP语言来设计和实现API接口。PHP是一种广泛使用的服务器端脚本语言,尤其适用于Web开发,因此它常用于创建API以供其他应用或服务调用。 首先,我们来看`index.html`,这是...
本"PHP接口精讲视频"深入浅出地讲解了这一关键主题,旨在帮助开发者更好地理解和应用PHP接口。 首先,理解接口的基本概念至关重要。接口就像一个合同,规定了类必须实现哪些方法,但并不规定这些方法如何实现。在...
php接口开发包,里面分为utf-8和GBK两个版本的内容 ==== 基本要求 ==== 1. PHP 5.x版本(php 4.x版本兼容性未测试,如有需要,请自行修改) 2. PHP 的 mbstring 或者 iconv 模块 3. 如果需要后台交易和查询请求,...
PHP接口文档的知识点主要包括以下几个方面: 1. PHP API接口基础知识 API是Application Programming Interface的缩写,指的是应用程序编程接口。PHP API接口是允许应用程序之间进行数据交互和功能调用的一种接口。...
在PHP中,接口数据的安全传输至关重要,这通常涉及到数据加密、解密以及签名验证等步骤。上述代码展示了如何使用PHP实现AES和RSA两种加密算法来处理接口数据。 首先,AES(Advanced Encryption Standard)是一种...
本文将详细探讨“农行支付接口开发PHP接口包”的相关知识点,帮助开发者更好地理解和使用这一工具。 首先,我们要明白“农行支付接口”是指中国农业银行提供的用于处理在线交易的API(应用程序接口)。这些接口允许...
支付宝免签约php接口,asp接口代码 支付宝免签约即时到帐系统(接入通用教程) 一、免签约接口运行原理:(用户充值,用户升级,自动发卡等网站) 二、回调参数说明:(GET方式) 参数名 参数 说明 交易密钥 ...
【帝国CMS App PHP接口】是基于PHP开发的一套用于移动应用(APP)与帝国CMS内容管理系统之间交互的接口。这个接口主要使用AJAX技术进行数据通信,并通过JSON格式传输数据,便于实现新闻类数据的实时获取和更新。下面...
API Manager 是一款基于 PHP 开发的接口管理工具,专为开发者设计,用于高效地管理和测试API接口。在软件开发过程中,API(Application Programming Interface)扮演着至关重要的角色,它允许不同的应用程序之间进行...
【农行PHP接口实例】是针对中国农业银行提供的B2C支付接口的一种PHP实现,用于商家集成农行的在线支付功能。B2C(Business to Consumer)支付模式是指商家直接面向消费者进行交易的电子商务类型,常见于线上购物、...
PHP接口类应能正确处理这些回调,验证通知的签名,检查订单状态,并进行相应的业务逻辑处理。 7. **异常处理**: 在实现过程中,可能会遇到网络问题、参数错误、证书问题等。接口类应具备良好的异常处理机制,能够...
易宝PHP接口SDK是专门为开发者设计的一套工具集,用于集成易宝支付的服务到PHP应用程序中。易宝支付,又称为YeePay,是中国领先的第三方支付平台,提供各种支付解决方案,包括在线支付、移动支付、扫码支付等。通过...
"PHP接口文档"通常指的是PHP应用程序或服务提供的API(Application Programming Interface)的详细规格说明。 接口文档的主要目的是为开发者提供清晰的指南,让他们了解如何正确地调用和使用特定的PHP函数、类或...
使apache与php可以通信的接口程序
在这个名为"ECMobile_Universal-master"的压缩包中,我们找到了ECShop的客户端组件,包括针对Android和iOS操作系统的应用程序源代码,以及服务端PHP接口文件。这个综合包旨在帮助开发者为ECShop网站创建功能完备的...
LyAPI是一款轻量级的PHP开源框架,它可以让接口开发变得简单: 功能完备:LyAPI内置了一些常用的功能,同时还在不断的开发拓展库。 开发简单:一个API就是一个函数,你只需要将数据返回,框架会自动将数据进行转换并...