一、简单工厂模式
简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例。
public interface Sample{
}
Public class SampleA implements Sample{
}
Public class SampleB implements Sample{
}
public class Factory{
public static Sample creator(int which){ //getClass 产生Sample 一般可使用动态类装载装入类。
if (which==1)
return new SampleA();
else if (which==2)
return new SampleB();
}
}
应用情景:
1、工厂负责筹建的对象比较少。
2、客户只知道传入工厂的参数,对于如何创建对象(逻辑)不关心。
二 、工厂方法(Factory Method)模式
工厂方法模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的产品。
//定义水果接口
public interface Fruit {
public String createFruit();
}
//水果1
public class Apple implements Fruit {
@Override
public String createFruit() {
return "Apple";
}
}
//水果2
public class Banand implements Fruit {
@Override
public String createFruit() {
return "Banand";
}
}
//定义水果工厂接口
public interface FruitFactory {
public Fruit factory();
}
//苹果工厂类
public class AppleFactory implements FruitFactory {
@Override
public Fruit factory() {
Fruit f= new Apple();
return f;
}
}
//香蕉工厂类
public class BanandFactory implements FruitFactory {
@Override
public Fruit factory() {
Fruit f= new Banand();
return f;
}
}
//定义一个测试类
public class FactoryTest {
private FruitFactory f1=new AppleFactory();
private FruitFactory f2=new BanandFactory();
public void test(){
System.out.println("AppleFactory生产"+f1.factory().createFruit());
System.out.println("BanandFactory生产"+f2.factory().createFruit());
}
public static void main(String[] args) {
new FactoryTest().test();
}
}
//打印结果如下:
AppleFactory生产Apple
BanandFactory生产Banand
抽象工厂模式
public interface Cpu
{
}
public interface Ram
{
}
//四个具体产品
public class PcCpu implements Cpu
{
}
public class MacCpu implements Cpu
{
}
public class PcRam implements Ram
{
}
public class MacRam implements Ram
{
}
//抽象工厂角色
public interface ComputerProducer
{
Cpu createCpu();
Ram createRam();
}
//两个具体工厂角色
public class PcProducer implements ComputerProducer
{
public Cpu createCpu()
{
return new PcCpu();
}
public Ram createRam()
{
return new PcRam();
}
}
public class MacProducer implements ComputerProducer
{
[1] public Cpu createCpu()
{
return new MacCpu();
}
public Ram createRam()
{
return new MacRam();
}
}
一般情况下,有多少个抽象产品,就有多少个工厂方法。(比如再增加一个PC与MAC不同的其他计算机配件,例如显卡)。
三,抽象工厂
- 大小: 17.1 KB
- 大小: 25.6 KB
- 大小: 5.8 KB
- 大小: 100.2 KB
分享到:
相关推荐
介绍的是工厂模式 包括简单工厂模式、工厂方法模式、抽象工厂模式 包括PPT和代码
4.简单工厂-工厂方法-抽象工厂 对比总结
简单工厂模式和工厂方法模式的Demo程序,在VC10下写的,对比两者的Demo程序,你可以慢慢领会两种模式的优缺点。
本文章通俗易懂的对工厂模式进行了讲解,相信您看完这篇文章会对工厂模式有更深入的了解
工厂方法模式和抽象工厂模式的区别,对工厂方法模式和抽象工厂模式做了简单的比较
设计模式之工厂方法、简单工厂、抽象工厂
通过抽象类中的抽象方法实现简单工厂模式。
NULL 博文链接:https://1193355343.iteye.com/blog/2370838
有一种常见的分类的方法:根据产品是由具体产品还是具体工厂可以分为 工厂方法模式 和 简单工厂模式;根据工厂的抽象程度可以分为 工厂方法模式 和 抽象工厂模式。接下来会通过例子对比简单工厂模式和工厂方法模式。...
工厂方法模式之所以可以解决简单工厂的模式,是因为它的实现把具体产品的创建推迟到子类中,此 时工厂类不再负责所有产品的创建,而只是给出具体工厂必须实现的接口,这样工厂方法模式就可以允许 系统不修改工厂类...
在简单工厂模式中,所有的产品都是由同一个工厂创建,工厂类职责较重,业务逻辑较为复杂,具体产品与工厂类之间的耦合度高,严重影响了系统的灵活性和扩展性,而工厂方法模式则可以很好地解决这一问题。
用工厂方法模式重构简易计算器。界面要求:模仿windows操作系统附件中的计算器样式进行设计,要设计基本的菜单项(快捷键、热键、和分割线等)。功能要求:实现基本计算功能
从简单工厂,到工厂方法到抽象工厂,这几种都带有“工厂”的模式,总是容易叫人迷糊,我仔细研究了下,然后用简单的例子做类比,列出了自己的通俗理解和比较,大部分是自己的体会,感觉理的比较清楚,末尾提了下...
C++ 工厂模式 (简单工厂、工厂和抽象工厂)
Java设计模式 - 简单工厂 & 工厂方法(构建工厂)源码:FactoryModel - 详情:https://blog.csdn.net/Dream_Weave/article/details/83989879
java设计模式 简单工厂模式uml类图,一张图就让你秒懂简单工厂模式
主要讲述了c#中的简单工厂和虚方法、抽象类、抽象方法的语法和用法
这个是用工厂方法模式写的一个简易的计算器,这个代码可重用性高,满足开闭原则。
c#工厂模式 简单工厂,抽象工厂,单件模式
工厂方法模式,主要是利用反射机制获取配置文件的信息,用户可以在不知道如何生产对象的情况下获取对象。包括源代码和文档(文档在本博客的文档说明中)。