Java模板模式之浅拷贝
来源:互联网 发布:snmp网管软件 免费 编辑:程序博客网 时间:2024/06/17 12:34
public class Client { //从调用者代码进入 public static void main(String[] args) { SmallProduct product=new SmallProduct(); product.setProductNumber(330); product.setProductName("小产品A类"); DealFactory factory=new DealFactory(); factory.dealProduct(product); }//接下来是SmllProduct类代码public class SmallProduct implements BaseProduct { private int productNumber; private String productName; @Override public int getProductNumber() { // TODO Auto-generated method stub return productNumber; } @Override public void setProductNumber(int productNumber) { // TODO Auto-generated method stub this.productNumber=productNumber; } @Override public IProType clonePro() { // TODO Auto-generated method stub SmallProduct product=new SmallProduct(); product.setProductNumber(productNumber); product.setProductName(productName); return product; } public String getProductName() { return productName; } public void setProductName(String name) { this.productName=name; }}
产品基类的代码
public interface IProType { public IProType clonePro();}public interface BaseProduct extends IProType { int getProductNumber(); void setProductNumber(int productNumber);}
最后是工厂类代码,调用者根本就不用关心怎么保留初始“product”,调用者处理的“product”都是clone过来的,任何的修改都是在clone出来的新产品基础上进行修改,而原“product”都是不改变的,模板设计很好的隐藏的clone过程。
public class DealFactory { public void dealProduct(BaseProduct product) { // 如果不是模板方式,就要分类判断,不利于拓展 if (product instanceof SmallProduct) { String name=((SmallProduct) product).getProductName(); System.out.println("test=原地址:" + product.hashCode() + "||名字:" + name); } //下面是模板设计模式, int number = product.getProductNumber(); while (number > 0) { BaseProduct pro = (BaseProduct) product.clonePro(); pro.setProductNumber(number > 100 ? 100 : number); number -= 100; if(product instanceof SmallProduct) { String name1=((SmallProduct) pro).getProductName(); System.out.print("分流之后=name="+name1); } System.out.println("=test=分流之后=number:" + pro.getProductNumber() + "||地址:" + pro.hashCode()); } }}
最后的运行效果:
阅读全文
0 0
- Java模板模式之浅拷贝
- java 原型模式之深拷贝和浅拷贝
- Java原型模式之浅拷贝-深拷贝
- Java设计模式之模板
- Java设计模式之模板方法模式
- Java模式设计之模板方法模式
- java设计模式之模板方法模式
- Java设计模式之模板方法模式
- JAVA-设计模式之模板方法模式
- 《JAVA与模式》之模板方法模式
- JAVA与模式 之 模板方法模式
- Java--设计模式之模板方法模式
- JAVA与模式 之模板方法模式
- java设计模式之模板方法模式
- 《JAVA与模式》之模板方法模式
- 《JAVA与模式》之模板方法模式
- java之设计模式---模板设计模式
- 《JAVA与模式》之模板方法模式
- 虚拟机的安装,网络设置,java安装过程
- mod_jk 1.2.40版本
- 设计模式-备忘录模式
- 蓝桥杯(3)圆的面积
- SSH项目运行一段时间后无响应
- Java模板模式之浅拷贝
- display:table-cell布局
- JAVASE之泛型,集合
- SpringData
- Java 使用Jsp生成验证码(通用)
- SourceInsight 4.0 查看Java项目教程
- Code war . The fusc function -- Part 2
- iOS开发中,使用PC查看/修改沙盒文件
- Linux-firewalld0.0iptables