易学设计模式看书笔记(3) - 工厂方法模式

二、工厂方法模式

1.动物管理系统的例子

首先,抽象的动物类和具体的动物实现类:

public interface Animal{

  public void eat();

}

public class Tiger implements Animal
{
	public void eat(){
		sysout.out.println("老虎会吃");
	};
	public void run(){
		sysout.out.println("老虎会跑");
	};
}

public class Dolphin implements Animal
{
	public void eat(){
		sysout.out.println("海豚会吃");
	};
	public void swim(){
		sysout.out.println("海豚会游泳");
	};
}

然后设计一个只负责定义创建方式的抽象工厂类:

public interface Factory
{
	public Animal createAnimail();
}

再分别设计老虎、海豚的具体工厂实现类,都继承抽象工厂类:

public class Trigerfactory implements Factory
{
	public Animal createAnimal(){
		return new Triger();
	}
}

public class Dolphinfactory implements Factory
{
	public Animal createAnimal(){
		return new Dolphin();
	}
}

客户端调用:

public class Client
{
	public static void main(String[] args)
	{
		Factory factory = new TrierFactory();
		Animal animal = factory.createAnimal();
		animal.eat();
		factory = new DolphinFactory();
		animal = fatory.createAnimal();
		animal.eat();
	}
}

2.工厂方法模式简介

定义:工厂方法模式中抽象工厂负责定义创建对象的接口,

具体对象的创建工作由实现抽象工厂的具体工厂类来完成。

3.工厂方法模式的优缺点:

优点:

在工厂方法模式中,客户端不再负责对象的创建,

而是把这个责任交给了具体的工厂类,客户端只负责对象的调用,

明确了各个类的职责。

如果有新的产品加进来,只需要增加一个具体的创建产品工厂类

和具体的产品类,不会影响其他原有的代码,后期维护更加容易,

增强了系统的可扩展性。

缺点:

需要额外的编写代码,增加了工作量。

易学设计模式看书笔记(3) - 工厂方法模式

时间: 2024-08-04 23:46:30

易学设计模式看书笔记(3) - 工厂方法模式的相关文章

易学设计模式看书笔记(2) - 简单工厂模式

本文摘自易学设计模式一书 一.简单工厂模式 1.动物管理系统的例子 public interface Animal{ public void eat(); } public class Tiger implements Animal { public void eat(){ sysout.out.println("老虎会吃"); }; public void run(){ sysout.out.println("老虎会跑"); }; } public class D

易学设计模式看书笔记(4) - 抽象工厂模式

 本文内容来自书上,不懂设计模式,只求混个眼熟. 三.抽象工厂模式 1.动物管理系统的例子 public interface Animal{ public void eat(); } public class Tiger implements Animal { public void eat(){ sysout.out.println("老虎会吃"); }; public void run(){ sysout.out.println("老虎会跑"); }; } pu

易学设计模式看书笔记(1) - 设计模式的分类

1 创建型模式 单独对对象的创建进行研究,高效的创建对象就是创建型模式讨论的问题.创建型设计模式有6种: 简单工厂模式(simple factory): 工厂方法模式(factory method): 抽象工厂模式(abstract factory): 创建者模式(Builder): 原型模式(Prototype): 单例模式(Singleton). 2 结构型模式 在解决了对象的创建问题之后,对象的组成以及对象之间的依赖关系就成了关注的焦点,因为如何设计对象之间的结构.继承和依赖关系会影响到后

易学设计模式看书笔记(7) - 代理模式

代理模式 1.系统日志记录的例子:给系统中的业务逻辑加上日志 (1):最简单直接的做法 public class Test { private Logger logger = Loger.getLogger(this.getClass().getName()); public void doLgic(String name){ logger.log(name + "开始业务逻辑处理..."); //业务逻辑处理相关程序 System.out.println("业务逻辑处理相关

易学设计模式看书笔记(6) - 创建者模式

四.创建者模式 1.摩托车组装系统 觉得这些例子挺适合入门的,容易理解, 看了之后大概是个什么样子的就有了印象. 摩托车 = 车架 + 车轮 + 轮胎 + 发动机. 首先设计摩托车类以及各零件类: 摩托车类: public interface Motorcycle { void build(); } public class Motorcycle1 implements Motorcycle { void build(){ Sysout.out.println("组装摩托车开始..."

设计模式看书笔记(5) - 三种工厂模式比较

先看三种工厂模式部分主要代码(完整代码在前三篇博客): 简单工厂模式: public class SampleFactory { public static Animal createAnimal(String animalName){ if("Tiger".equals(animalName))){ return new Triger(); }else if("Dolphin".equals(animalName)){ return new Dolphin();

设计模式之第1章-工厂方法模式(Java实现)

设计模式之第1章-工厂方法模式(Java实现) “我先来”,“不,老公,我先!”.远远的就听到几个人,哦不,是工厂方法模式和抽象工厂模式俩小夫妻在争吵,尼妹,又不是吃东西,谁先来不都一样(吃货的世界~).“抽象工厂模式,赶紧的自我介绍,工厂方法模式,你身为男人,要懂得绅士风度,lady first懂不懂,稍后再来,急什么.”(画外音:鱼哥,这是我家祖传的小吃,还有我爹的好酒blablabla),“哎呀,那个抽象工厂模式,阿姨喊你回家吃饭了.”“哦,我去去就回,等我啊.”工厂方法,赶紧的.“等等,

设计模式总结篇系列:工厂方法模式(Factory Method)

工厂方法模式适合于对实现了同一接口或继承了同一父类的一些类进行实例的创建.一般是通过定义一个工厂类,并在其方法中实现对具有上述特点的类对象的创建. 根据具体产生类对象的方法定义形式,又可以将其分为普通工厂方法模式.多个工厂方法模式和静态工厂方法模式. 一.普通工厂方法模式: 常见的经典写法如下(以发送邮件和短信为例): 1.定义邮件类和短信类具有的共同接口: 1 interface Sender{ 2 3 public void sender(); 4 5 } 2.定义邮件类和短信类: 1 cl

23种设计模式(2):工厂方法模式

定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类. 类型:创建类模式 类图: 工厂方法模式代码 interface IProduct { public void productMethod(); } class Product implements IProduct { public void productMethod() { System.out.println("产品"); } } interface IFactory { publ