simplefactory简单工厂模式

简单工厂模式概述
    又叫静态工厂方法模式,它定义一个具体的工厂类负责一些类的实例

优点
    客户端不需要在负责对象的创建,从而明确了各个类的职责

缺点:
    这个静态工厂类负责所有对象的创建,如果有新的对象增加,或者某
    些对象的而创建方式不通风,就需要不断的修改工厂类,不利于后期的维护

package com.simplafactory;

public interface Animal {
    public void eat();
}
package com.simplafactory;

public class Cat implements Animal {

    @Override
    public void eat() {
        System.out.println("猫吃鱼");
    }

}
package com.simplafactory;

public class Dog implements Animal {

    @Override
    public void eat() {
        System.out.println("狗吃肉");
    }

}
package com.simplafactory;

public class AnimalDemo {
    public static void main(String[] args) {
//        Dog d=new Dog();
//        Cat c=new Cat();
//
//        c.eat();
//        d.eat();
//
//        System.out.println("===============");

//        Animal d=new Dog();
//        Animal c=new Cat();
//        d.eat();
//        c.eat();
//        AnimalFactory af=new AnimalFactory();
//        Dog d=af.createDog();
//        Cat c=af.createCat();
//        d.eat();
//        c.eat();
        AnimalFactory af=new AnimalFactory();
        Dog d=(Dog) af.createAnimal("dog");
        Cat c=(Cat) af.createAnimal("cat");
        if(d!=null){
            d.eat();
        }
        if(c!=null){
            c.eat();
        }

    }
}
package com.simplafactory;

public class AnimalFactory {
//    public Dog createDog(){
//        return new Dog();
//    }
//
//    public Cat createCat(){
//        return new Cat();
//    }

    public Animal createAnimal(String name){
        if("cat".equalsIgnoreCase(name)){
            return new Cat();
        }
        else if("dog".equalsIgnoreCase(name)){
            return new Dog();
        }
        return null;
    }
}
时间: 2024-11-12 12:39:00

simplefactory简单工厂模式的相关文章

Design Patterns 2 陪我一起旅行---简单工厂模式SimpleFactory

简单工厂模式SimpleFactory 简单工厂模式又叫静态方法模式(因为工厂类定义了一个静态方法),由一个工厂类根据传入的参数决定创建出哪一种产品类的实例. 把经常改变需求的部分封装到一个类中达到降低对象之间的耦合度的目的. //将需求经常改变的部分封装到简单工厂类SimpleFactoryCooker中 public class SimpleFactoryCooker { //定义根据需要type返回指定Food对象的静态方法Cook public static Food Cook(stri

简单工厂模式(SimpleFactory)

最近在研究Java设计模式,因此把自己在学习过程中的体悟记录下来,以方便以后复习使用. 1.简单工厂的本质: 选择实现,根据语义我们知道简单工厂的重点是在选择上而不是实现上. 2.何时选用简单工厂: 1.如果想要完全封装隔离具体实现,让外部只能通过接口来操作封装体,那么可以选用简单工厂,让客户端通过工厂来获取相应的接口,无须了解具体实现. 2.如果你想要把对外创建对象的职责集中管理和控制,可以选用简单工厂,一个工厂可以创建很多的,不相关的对象. 3.优缺点 优点:更好的实现了面向接口编程,并且使

Java设计模式 -- 简单工厂模式(SimpleFactory)

一.什么是简单工厂模式 简单工厂模式属于类的创建型模式,又叫做静态工厂方法模式.通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类. 二.模式中包含的角色及其职责 1.工厂(Creator)角色简单工厂模式的核心,它负责实现创建所有实例的内部逻辑.工厂类可以被外界直接调用,创建所需的产品对象.2.抽象(Product)角色简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口.3.具体产品(Concrete Product)角色简单工厂模式所创建的具体实例

01简单工厂模式SimpleFactory

一.什么是简单工厂模式 简单工厂模式属于类的创建型模式,又叫做静态 工厂方法模式.通过专门定义一个类来负责创建 其他类的实例,被创建的实例通常都具有共同的 父类. 二.模式中包含的角色及其职责 1.工厂(Creator) 角色简单工厂模式的核心,它负责实现创建所有实例的内部逻辑.工厂类可以被外界直接调用,创建所需的产品对象. 2.抽象(Product)角色 简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口. 3.具体产品(Concrete Product) 角色简单工厂模式

设计模式的C++实现 24.简单工厂模式

简单工厂模式,又称静态工厂模式,属于创造型模式,但又不是23中GOF设计模式之一.简单工厂是由一个工厂对象决定创造出哪种产品类的实例.简单工厂模式是工厂模式中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现. 简单工厂通过传入的参数判断创建哪一个产品的实例,封装了对象的创建,客服端看到的只是产品的抽象对象,不关心返回子类的类型. 简单来说,简单工厂就是调用是传入一个参数来告诉工厂类要创建一个什么样的对象,然后工厂类返回这个对象. 缺点是 没添加一个产品子类,都要在工厂类中添加一个判断分支

设计模式之简单工厂模式Simple Factory(四创建型)

工厂模式简介. 工厂模式专门负责将大量有共同接口的类实例化 工厂模式可以动态决定将哪一个类实例化,不必事先知道每次要实例化哪一个类. 工厂模式有三种形态: 1.简单工厂模式Simple Factory,又称静态工厂方法模式 2.工厂方法模式Factory Method,又称多态性工厂模式 3.抽象工厂模式Abstract Factory,又称工具箱模式 2.什么是简单工厂模式 简单工厂模式是类的创建模式.是由一个工厂对象决定创建出哪一种产品类的实例,是不同的工厂方法模式的一个特殊实现.由一个工厂

简单工厂模式的C++实现

用简单工厂模式实现一个计算器类: 1 #include <iostream> 2 #include <string> 3 4 using namespace std; 5 6 class Operation 7 { 8 public: 9 Operation(double numA = 0, int numB = 0) : numberA(numA), numberB(numB) 10 { 11 } 12 virtual ~Operation() 13 { 14 cout <

简单工厂模式例子

/** 简单工厂模式:一个工厂生产三类汽车 高档汽车(TopCar).中等汽车(MidCar).低档汽车(LowCar) 生产汽车需要方法,定义一个ICar接口类定义其中的方法名. 三种汽车去实现这些方法. 定义一个工厂类 负责创建汽车对象 以上就是一个简单工厂模式的雏形.即程序开发者不用反复创建对象,只需要调用工厂模型便可以创建相应的对象. 注意用public定义的类,应该是一个独立的*.java文件.这里没有作区分. */ public interface ICar{ //该类是定义创建汽车

简单工厂模式c#

简单工厂模式c#上简单例子 namespace simplefactory { public partial class Form1 : Form { private void button1_Click(object sender, EventArgs e)//用户层次 { Operation operation = OperationFactory.createOperate(this.cbbOperation.SelectedIndex);//连接到简单工厂获取算法 operation.N