设计模式:工厂模式

参考实例:

抽象工厂模式的缺点不太容易扩展新的产品

  如果需要给整个产品族添加一个新的产品,那么就需要修改抽象工厂,这样就会导致修改所有的工厂实现类。

===================

工厂 其实就是抽象出事物的共性或者相似之处,定义共同的接口,实现交给具体的子类处理的过程。

理解 产品族和等级的概念:

1.抽象工厂:定义工厂接口,包含生产原味和草莓味的酸奶的方法;

2.定义工厂的实现类:蒙牛工厂和伊利工厂,并实现接口的方法;

3.抽象工厂:定义口味接口,包含原味接口和草莓味接口,每个接口包含该口味酸奶的价格的方法;

4.定义口味接口的实现类:每个工厂都能生产原味和草莓味酸奶,因此每个工厂分别包含原味接口的实现类和草莓味接口的实现类,实现类中给出该口味酸奶的价格。

5.顾客类:顾客购买酸奶,只要说明要买酸奶的厂家,既得到该厂家下不同口味酸奶的价格信息;

代码如下:

定义 草莓味接口:

package iv.factory.feidanyi.yuanshi.interfaces;public interface CaoMeiWei {void getPrice();}

定义草莓味的实现类:蒙牛草莓味

package iv.factory.feidanyi.yuanshi.classes;import iv.factory.feidanyi.yuanshi.interfaces.CaoMeiWei;public class MengNiuCmw implements CaoMeiWei {private int price =0;public MengNiuCmw(int price){this.price = price;}public void getPrice() {// TODO Auto-generated method stubSystem.out.println("蒙牛草莓味价格:"+this.price);}}

定义草莓味的实现类:伊利草莓味

package iv.factory.feidanyi.yuanshi.classes;import iv.factory.feidanyi.yuanshi.interfaces.CaoMeiWei;public class YiLiCmw implements CaoMeiWei {private int price =0;public YiLiCmw(int price){this.price = price;}public void getPrice() {// TODO Auto-generated method stubSystem.out.println("伊利草莓味价格:"+this.price);}}

定义原味接口:

package iv.factory.feidanyi.yuanshi.interfaces;public interface YuanWei {void getPrice();}

定义原味接口的实现类:蒙牛原味:

package iv.factory.feidanyi.yuanshi.classes;import iv.factory.feidanyi.yuanshi.interfaces.YuanWei;public class MengNiuYw implements YuanWei{private short price =0;private String brand ="";public MengNiuYw(int price){this.price = (short) price;}public void getPrice() {// TODO Auto-generated method stubSystem.out.println("原味价格:"+this.price);}public void getBrand() {// TODO Auto-generated method stubSystem.out.println("品牌:"+this.brand);}}

定义原味接口的实现类:伊利原味:

package iv.factory.feidanyi.yuanshi.classes;import iv.factory.feidanyi.yuanshi.interfaces.YuanWei;public class YiLiYw implements YuanWei{private int price =0;private String brand = "";public YiLiYw(int price){this.price = price;}public void getPrice() {// TODO Auto-generated method stubSystem.out.println("原味价格:"+this.price);}}

定义厂家的接口:

package iv.factory.feidanyi.yuanshi.interfaces;public interface AbstractFactory {YuanWei createYuanWei();CaoMeiWei createCaoMeiWei();}

定义厂家的接口的实现类:蒙牛厂家:

package iv.factory.feidanyi.yuanshi.classes;import iv.factory.feidanyi.yuanshi.interfaces.AbstractBrandFactory;import iv.factory.feidanyi.yuanshi.interfaces.AbstractFactory;import iv.factory.feidanyi.yuanshi.interfaces.CaoMeiWei;import iv.factory.feidanyi.yuanshi.interfaces.YuanWei;public class MengNiuFactory implements AbstractFactory,AbstractBrandFactory {public CaoMeiWei createCaoMeiWei() {// TODO Auto-generated method stubreturn new MengNiuCmw(14);}public YuanWei createYuanWei() {// TODO Auto-generated method stubreturn new MengNiuYw(15);}public String getBrand() {// TODO Auto-generated method stubreturn new MengNiu().getBrand();}}

定义厂家的接口的实现类:伊利厂家:

package iv.factory.feidanyi.yuanshi.classes;import iv.factory.feidanyi.yuanshi.interfaces.AbstractBrandFactory;import iv.factory.feidanyi.yuanshi.interfaces.AbstractFactory;import iv.factory.feidanyi.yuanshi.interfaces.CaoMeiWei;import iv.factory.feidanyi.yuanshi.interfaces.YuanWei;public class YiLiFactory implements AbstractFactory,AbstractBrandFactory {public CaoMeiWei createCaoMeiWei() {// TODO Auto-generated method stubreturn new YiLiCmw(11);}public YuanWei createYuanWei() {// TODO Auto-generated method stubreturn new YiLiYw(12);}public String getBrand() {// TODO Auto-generated method stubreturn new YiLi().getBrand();}}

定义顾客类:

package iv.factory.feidanyi.yuanshi.classes;import iv.factory.feidanyi.yuanshi.interfaces.AbstractFactory;import iv.factory.feidanyi.yuanshi.interfaces.CaoMeiWei;import iv.factory.feidanyi.yuanshi.interfaces.YuanWei;public class Customer {private YuanWei yw =null;private CaoMeiWei cmw = null;public void buyMilk(AbstractFactory af){yw = af.createYuanWei();cmw = af.createCaoMeiWei();yw.getPrice();cmw.getPrice();}}在繁华中体会热闹;若是厌倦了喧嚣,寻一处宁静的幽谷,

设计模式:工厂模式

相关文章:

你感兴趣的文章:

标签云: