原型模式

来源:互联网 发布:te工程师要会编程吗 编辑:程序博客网 时间:2024/06/06 12:24

原型模式 

  最近几天吃鸡这种游戏很火,火到连小米都加入进来,而提到小米,不得不提他那种开创的独特的营销模式,但是最近几年消费者对其这种饥饿营销产生了一些匹配,在这种背景下,小米也开始从线上转入线下,开始在各个地区创建小米之家,今天写对原型模式的一些理解 就从小米之家的发展来切入。

首先声明一个类 毕竟java是面向对象编程的 所以首先建一个小米之家的类

                 
public class XiaoMiZhiJia {public String name;//小米之家的名字public List<String> everyPhoneName = new ArrayList<>();//小米之家中所有的手机名字public List<String> staffName = new ArrayList<>();//员工姓名//....省略其他属性//省略set get方法 }

下面我们来创建我们第一个小米之家

public class Test {public static void main(String[] args) {XiaoMiZhiJia xiaomiyihao = new  XiaoMiZhiJia();xiaomiyihao.setName("小米之家");//设置店铺的名字List<String> phoneType = new ArrayList<>();phoneType.add("小米1");phoneType.add("小米6s");phoneType.add("红米note2");xiaomiyihao.setEveryPhoneType(phoneType);//添加要展示的手机型号List<String> staffs = new ArrayList<>();staffs.add("小米一号员工");staffs.add("小米2号员工");staffs.add("小米3号员工");xiaomiyihao.setStaffName(staffs);//添加所有的员工}}

这样我们的一个简略的小米之家就完成了,但我们并不能就此停止,因为我们的计划是要在全国各地每个省份都要建小米之家,这样问题就来了,如果我们再向上面一样一个一个的设置会很麻烦,因为我们发现全国各地的小米之家基本都是一个样子的比如名字都叫小米之家,展示的手机的型号,小米之家的布局,以及其他很多东西都是一样的,如果我们再一个一个设置,这样会阻碍我们创建小米之家的速度,因此为了能够在极短的时间内创建2000w个小米之家,我们就完全可以把相同的属性复制,这也就是原型模式下面我们首先声明一个接口

public interface Prototype {public Prototype clone();}

这个接口就一个方法 克隆也就是复制
接下来我们重新构造一下小米之家这个类使其实现这个接口
public class XiaoMiZhiJia  implements Prototype{public String name;public List<String> everyPhoneType = new ArrayList<>();//小米之家中所有的手机名字public List<String> everystaffName = new ArrayList<>();//小米之家中所有员工的名字public XiaoMiZhiJia() {};public Prototype clone(){return new XiaoMiZhiJia(this);}public XiaoMiZhiJia(XiaoMiZhiJia XiaoMiZhiJia) {this.name=XiaoMiZhiJia.getName();for (String phoneName : XiaoMiZhiJia.getEveryPhoneType()) {everyPhoneType.add(phoneName);}}}

同样我们省略其set get 方法 接下来我们在上一个测试类的基础上 来实现我们要在5秒中内 建造 200w个小米之家的梦想
public class Test {public static void main(String[] args) {XiaoMiZhiJia xiaomiyihao = new  XiaoMiZhiJia();xiaomiyihao.setName("小米之家");//设置店铺的名字List<String> phoneType = new ArrayList<>();phoneType.add("小米1");phoneType.add("小米6s");phoneType.add("红米note2");xiaomiyihao.setEveryPhoneType(phoneType);//添加要展示的手机型号List<String> staffs = new ArrayList<>();staffs.add("小米一号员工");staffs.add("小米2号员工");staffs.add("小米3号员工");xiaomiyihao.setEverystaffName(staffs);//添加所有的员工//新添加的代码List<XiaoMiZhiJia> container = new ArrayList<>();for(int i =0 ;i<100000000;i++) {container.add((XiaoMiZhiJia)xiaomiyihao.clone());}}}

这样我们就实现了我们的梦想,下面只需要去找工人就可以了。。
下面总结下原型模式的好处 一个字 快。。。。