1:工厂模式

1.1简单工厂模式

优点:简单工厂模式,封装了创建对象的逻辑,完成了创建对象逻辑与业务代码逻辑的解耦。
试想客户端是多个service层的文件,对比不使用简单工厂模式,当我们要改变产生对象的逻辑时,
需要在多个service文件中找到这部分代码进行修改。在使用简单工厂模式后,只需要修改简单工厂中生成对象的逻辑即可,
不需要修改业务代码。完成了解耦。缺点:每当具体产品类的抽象产品类增多时,会需要在简单工厂类中新增关于新增产品类对象生成的方法。
当抽象产品类很多时,抽象工厂会很臃肿。并且在这种情形下,SimpleFactory类也不符合开闭原则。
public class SimpleFactory {public static void main(String[] args) {A a = getFactory("A1");a.method();a = getFactory("A2");a.method();}public static A getFactory(String type){if("A1".equals(type)){return new A1();}elsereturn new A2();}
}
interface A{void method();
}
class A1 implements  A{public void method(){System.out.println("A1-----------");}
}
class A2 implements  A{public void method(){System.out.println("A2-----------");}
}

1.2工厂模式

从简单工厂模式的讲述知道:简单工厂的一个缺点在于,每当需要新增产品时,
都需要修改负责生产产品的SimpleFactory类,违背了“开闭原则”,
并且会使SimpleFactory类十分的臃肿。而使用工厂方法模式后,当新增ProductC时,
只需要对应创建具体产品类ProductC和负责生产ProductC的具体工厂FactoryC即可。符合“开闭原则”,便于扩展。它的缺点在于:
(1)类的个数容易过多,增加复杂度
(2)实现抽象工厂接口的具体工厂只能生产出一种产品(可以用抽象工厂模式解决)
public class Factory {public static void main(String[] args) {B b1 = new B1Factory().getB();b1.method();B b2 = new B2Factory().getB();b2.method();}
}
interface B {void method();
}
class B1 implements B {@Overridepublic void method() {System.out.println("B1----------");}
}
class B2 implements B {@Overridepublic void method() {System.out.println("B2----------");}
}interface Factorys {B getB();
}class B1Factory implements Factorys {@Overridepublic B getB() {return new B1();}
}class B2Factory implements Factorys {@Overridepublic B getB() {return new B2();}
}

1.3抽象工厂模式

抽象工厂模式是用于解决“一类产品”的创建问题(在上述场景中,可以把“李宁篮球”,“李宁足球”,“安踏篮球”,“安踏足球”归纳为:“篮球”,“足球”这两类商品)
public class AbstractFactory {public static void main(String[] args) {AbstractFactorys  lnFactory = new LNFactory();lnFactory.getFootballFactory().makeFootBall();lnFactory.getBasketballFactory().makeBasketBall();AbstractFactorys nkFactory  = new NKFactory();nkFactory.getFootballFactory().makeFootBall();nkFactory.getBasketballFactory().makeBasketBall();}
}
//抽象工厂
interface AbstractFactorys{Football   getFootballFactory();Basketball getBasketballFactory();
}
//抽象产品
interface Football{void makeFootBall();
}
interface Basketball{void makeBasketBall();
}
//具体产品
class LNFootball implements Football{@Overridepublic void makeFootBall() {System.out.println("makeLNFootball-----------");}
}
class NKFootball implements Football{@Overridepublic void makeFootBall() {System.out.println("makeNKFootball-----------");}
}
class LNBasketball implements Basketball{@Overridepublic void makeBasketBall() {System.out.println("makeLNBasketball-----------");}
}
class NKBasketball implements Basketball{@Overridepublic void makeBasketBall() {System.out.println("makeNKBasketball-----------");}
}
//具体工厂
class LNFactory implements AbstractFactorys{@Overridepublic Football getFootballFactory() {return new LNFootball();}@Overridepublic Basketball getBasketballFactory() {return new LNBasketball();}
}
class NKFactory implements AbstractFactorys{@Overridepublic Football getFootballFactory() {return new NKFootball();}@Overridepublic Basketball getBasketballFactory() {return new NKBasketball();}
}

Java的设计模式:相关推荐

  1. java/android 设计模式学习笔记(1)--- 单例模式

    前段时间公司一些同事在讨论单例模式(我是最渣的一个,都插不上嘴 T__T ),这个模式使用的频率很高,也可能是很多人最熟悉的设计模式,当然单例模式也算是最简单的设计模式之一吧,简单归简单,但是在实际使 ...

  2. java策略设计模式_Java中的策略设计模式

    java策略设计模式 策略设计模式是一种行为模式,其中我们有多种算法/策略来完成一项任务,所使用的算法/策略留给客户选择. 各种算法选项封装在单独的类中. 在本教程中,我们将学习在Java中实现策略设 ...

  3. java观察者设计模式_Java中的观察者设计模式

    java观察者设计模式 在本教程中,我们将讨论Observer设计模式. 观察者模式有两个主要方面- 主题和观察者 . 当我们的系统有多个对象(称为观察者)时 ,将使用一个模式,即依赖于一个特定对象( ...

  4. java 模板方法设计模式_Java中的模板方法设计模式

    java 模板方法设计模式 模板方法是一种行为设计模式 ,用于创建方法存根并将某些实现步骤推迟到子类. 模板方法定义了执行算法的步骤,它可以提供默认实现,该实现对于所有或某些子类可能是通用的. 让我们 ...

  5. java 生成器 设计模式_Java中的生成器设计模式

    java 生成器 设计模式 Java 中的 Builder设计模式是一种创建模式,即用于创建对象,类似于 工厂方法设计模式 ,这也是创建设计模式. 在学习任何设计模式之前,我建议先找出特定设计模式要解 ...

  6. java设计模式之道文字版,Java Web设计模式之道 PDF

    资源名称:Java Web设计模式之道 PDF 第一部分 仙人指路--设计模式简介 第1章 设计模式概述 1.1 设计模式是什么 1.2 软件设计模式的发展历程 1.3 作者阐述软件设计模式的主要方式 ...

  7. Java代理设计模式(Proxy)的具体实现:静态代理和动态代理

    Java代理设计模式(Proxy)的具体实现:静态代理和动态代理 实现方式一:静态代理 静态代理方式的优点 静态代理方式的缺点 Java动态代理实现方式一:InvocationHandler Java ...

  8. Java常用设计模式————原型模式(一)

    介绍 原型模式(Prototype Pattern):用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象. 原型模式用于创建重复的对象,同时又能保证性能.当直接创建对象的代价比较大时,则采用 ...

  9. Java描述设计模式(05):原型模式

    一.原型模式简介 1.基础概念 原型模式属于对象的创建模式.通过给出一个原型对象来指明所有创建的对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象. 2.模式结构 原型模式要求对象实现一个 ...

  10. java三判式,Java编程设计模式,第 3 部分

    Java编程设计模式,第 3 部分 Java 8 被动迭代式特性介绍 2015 年 8 月 10 日发布 系列内容: 此内容是该系列 3 部分中的第 # 部分: Java编程设计模式,第 3 部分 h ...

最新文章

  1. Linux那些事儿 之 戏说USB(18)设备的生命线(一)
  2. React Native Expo开发的OW移动端项目
  3. linux 命令:ls命令
  4. php启动提示缺失v9,phpcms程序v9提示“您要查看的信息不存在”怎么解决
  5. Aviator(表达式执行引擎)发布1.0.1
  6. 蓝桥杯真题训练 2019.3题
  7. 计算机用手机的网络,电脑做热点让手机上网_电脑开热点给手机用
  8. Jsp页面用table表格来让文字和文本框对齐
  9. python 条件语句、循环语句
  10. bzoj 相似回文串 3350 3103 弦图染色+manacher
  11. Android:如何打开工程模式
  12. 计算机专业sci二区论文难吗,SCI二区论文发表难度大吗
  13. java触屏改_一个JAVA游戏改键改触屏的教程!
  14. 推荐几个编程学习网站
  15. 把SD卡制作为启动卡的操作步骤
  16. Android UI基础 仿闲鱼发布页
  17. 高德地图实现租房学习
  18. 便利贴--17{移动端滑动模块}
  19. 我的计算机制作幻灯片在哪,电脑ppt制作软件,电脑里制作PPT(幻灯片)的软件在哪?...
  20. 【RTX操作系统教程】第3章 初学RTX操作系统准备工作

热门文章

  1. 一则能领略到人生苦涩和忧伤的故事
  2. RememberMe原理分析
  3. 如何完成微信小程序的登录功能
  4. Python之路【第十六篇】:Django【基础篇】
  5. Data Wrangling
  6. 赖床星人的枕头arduino
  7. DHT11(ASAIR)温湿度传感器的使用(软件)
  8. 360云盘关闭一周后:国家版权局称值得肯定,是榜样
  9. 【OR】约束优化:对偶理论(2)
  10. Dreamweaver CS6代码如何自动缩进?