Java的设计模式:
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的设计模式:相关推荐
- java/android 设计模式学习笔记(1)--- 单例模式
前段时间公司一些同事在讨论单例模式(我是最渣的一个,都插不上嘴 T__T ),这个模式使用的频率很高,也可能是很多人最熟悉的设计模式,当然单例模式也算是最简单的设计模式之一吧,简单归简单,但是在实际使 ...
- java策略设计模式_Java中的策略设计模式
java策略设计模式 策略设计模式是一种行为模式,其中我们有多种算法/策略来完成一项任务,所使用的算法/策略留给客户选择. 各种算法选项封装在单独的类中. 在本教程中,我们将学习在Java中实现策略设 ...
- java观察者设计模式_Java中的观察者设计模式
java观察者设计模式 在本教程中,我们将讨论Observer设计模式. 观察者模式有两个主要方面- 主题和观察者 . 当我们的系统有多个对象(称为观察者)时 ,将使用一个模式,即依赖于一个特定对象( ...
- java 模板方法设计模式_Java中的模板方法设计模式
java 模板方法设计模式 模板方法是一种行为设计模式 ,用于创建方法存根并将某些实现步骤推迟到子类. 模板方法定义了执行算法的步骤,它可以提供默认实现,该实现对于所有或某些子类可能是通用的. 让我们 ...
- java 生成器 设计模式_Java中的生成器设计模式
java 生成器 设计模式 Java 中的 Builder设计模式是一种创建模式,即用于创建对象,类似于 工厂方法设计模式 ,这也是创建设计模式. 在学习任何设计模式之前,我建议先找出特定设计模式要解 ...
- java设计模式之道文字版,Java Web设计模式之道 PDF
资源名称:Java Web设计模式之道 PDF 第一部分 仙人指路--设计模式简介 第1章 设计模式概述 1.1 设计模式是什么 1.2 软件设计模式的发展历程 1.3 作者阐述软件设计模式的主要方式 ...
- Java代理设计模式(Proxy)的具体实现:静态代理和动态代理
Java代理设计模式(Proxy)的具体实现:静态代理和动态代理 实现方式一:静态代理 静态代理方式的优点 静态代理方式的缺点 Java动态代理实现方式一:InvocationHandler Java ...
- Java常用设计模式————原型模式(一)
介绍 原型模式(Prototype Pattern):用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象. 原型模式用于创建重复的对象,同时又能保证性能.当直接创建对象的代价比较大时,则采用 ...
- Java描述设计模式(05):原型模式
一.原型模式简介 1.基础概念 原型模式属于对象的创建模式.通过给出一个原型对象来指明所有创建的对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象. 2.模式结构 原型模式要求对象实现一个 ...
- java三判式,Java编程设计模式,第 3 部分
Java编程设计模式,第 3 部分 Java 8 被动迭代式特性介绍 2015 年 8 月 10 日发布 系列内容: 此内容是该系列 3 部分中的第 # 部分: Java编程设计模式,第 3 部分 h ...
最新文章
- Linux那些事儿 之 戏说USB(18)设备的生命线(一)
- React Native Expo开发的OW移动端项目
- linux 命令:ls命令
- php启动提示缺失v9,phpcms程序v9提示“您要查看的信息不存在”怎么解决
- Aviator(表达式执行引擎)发布1.0.1
- 蓝桥杯真题训练 2019.3题
- 计算机用手机的网络,电脑做热点让手机上网_电脑开热点给手机用
- Jsp页面用table表格来让文字和文本框对齐
- python 条件语句、循环语句
- bzoj 相似回文串 3350 3103 弦图染色+manacher
- Android:如何打开工程模式
- 计算机专业sci二区论文难吗,SCI二区论文发表难度大吗
- java触屏改_一个JAVA游戏改键改触屏的教程!
- 推荐几个编程学习网站
- 把SD卡制作为启动卡的操作步骤
- Android UI基础 仿闲鱼发布页
- 高德地图实现租房学习
- 便利贴--17{移动端滑动模块}
- 我的计算机制作幻灯片在哪,电脑ppt制作软件,电脑里制作PPT(幻灯片)的软件在哪?...
- 【RTX操作系统教程】第3章 初学RTX操作系统准备工作