之策略模式

某公司专门销售各种打印机,销售打印机时都有一定的折扣让利给顾客,但折扣计算的方法有很多种,如:不打折;每台减扣固定的金额;按售价的5%打折等等,且折扣计算方法可能发生变化。现在要开发该公司的销售系统,实现打印机销售时的价格计算。
要求:请用strategy模式设计解决方案。方案要能够使得在销售打印机(即使是同一种打印机)时可以灵活的选用价格计算方法,并且可以很容易地增加或修改价格计算方法而不至于对整个系统的维护造成困难。实验报告中要求包含设计方案的类图,并给出相应的
Java源程序。
在这里插入图片描述

public interface Strategy {
   public  void favourable();
}

public class Nofavourable implements Strategy{
   @Override
   public void favourable() {
       System.out.println("没有折扣");
   }
}
public class FavourableSpercent implements Strategy{
   @Override
   public void favourable() {
       System.out.println("折扣5%");
   }
}
public class Context {
   protected Strategy str;
   public void setStrategy(Strategy stra){
       this.str=stra;
   }
   public void favourable()
   {
       str.favourable();
   }
}
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import java.io.File;

public class XMLUtil {
   public static Object getBean()
   {
       try
       {
           DocumentBuilderFactory dFactory = DocumentBuilderFactory.newInstance();
           DocumentBuilder builder = dFactory.newDocumentBuilder();
           Document doc;
           doc = builder.parse(new File("config.xml"));
           NodeList nl = doc.getElementsByTagName("className");
           Node classNode = nl.item(0).getFirstChild();
           String cName = classNode.getNodeValue();
           Class c= Class.forName(cName);
           Object obj=c.newInstance();
           return obj;
       }catch (Exception e){
           e.printStackTrace();
           return null;
       }
   }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

m0_54152049

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值