您的位置:首页 > 其它

设计模式之简单工厂模式

2016-12-08 18:51 197 查看
之前看设计模式的书,大概也就是知道有哪一些设计模式,如何去使用的,如何去实现的,但是没有比较深入地去了解,今天开始写写设计模式有哪一些,算是对之前学的内容一个总结吧

设计模式中的简单工厂模式

UML图:



定义了一个抽象类,里面有抽象的方法,具体的类重写父类的抽象方法,然后又一个简单工厂类去管理这个抽象类。

我们建一个生产牙膏和牙刷的工厂,我们给工厂指令,“牙膏”指令那就生产牙膏,“牙刷”指令那就生产牙刷。

不多说,直接上代码,理解关系在代码如何处理和简单工厂模式的魅力。

package test.pattern;
/**
* 这是一个物品抽象类
* @author CJB
*
*/
public abstract class Good {

/**
* 定义物品的用途的抽象方法
*/
public abstract void use();
/**
* 定义物品价格的抽象方法
*/
public abstract void price();
}

package test.pattern;

/**
* 牙刷类
* @author CJB
*
*/
public class ToothBrush extends Good {

@Override
public void use() {
// TODO Auto-generated method stub
System.out.println("用途:刷牙");
}

@Override
public void price() {
// TODO Auto-generated method stub
System.out.println("价格:5块钱");
}
}

package test.pattern;
/**
* 牙膏类
* @author CJB
*
*/
public class ToothPaste extends Good {

@Override
public void use() {
// TODO Auto-generated method stub

b77f
System.out.println("用途:健康口腔,洁白牙齿和清新口气");
}

@Override
public void price() {
// TODO Auto-generated method stub
System.out.println("价格:5块钱");
}

}

package test.pattern;
/**
* 工厂类
* @author CJB
*
*/
public class GoodFactory {
public Good getGood(String name){
Good good=null;
switch (name) {
case "牙膏":
good= new ToothPaste();
break;
case "牙刷":
good=new ToothBrush();
break;
}
return good;
}
}

package test.pattern;

import org.junit.Test;
/**
* 测试类
* @author CJB
*
*/
public class TestFactory {
@Test
public void test(){
//创建一个工厂,然后去生产你需要的东西,比如牙膏或者牙刷,
//这里的牙膏牙刷就是一个客户的指令,但是如果命令多了,那就创建好多个GoodFactory类
//于是就有下一次要说的静态工厂类,也就是在getGood()方法上加上static。
//多态-----接口 接口参数 =new 实现类();
//工厂模式是对多态的一个修改版,实现高内聚低耦合
Good good=new GoodFactory().getGood("牙膏");
Good good2=new GoodFactory().getGood("牙刷");
good.use();
good.price();
good2.use();
good2.price();
}
}


简单工厂模式就到此为止了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: