工厂模式

Spring中如何使用工厂模式实现程序解耦?

耗尽温柔 提交于 2019-12-27 04:37:32
1、 啥是耦合、解耦? 既然是程序解耦,那我们必须要先知道啥是耦合,耦合简单来说就是程序的依赖关系,而依赖关系则主要包括 1、 类之间的依赖 2、 方法间的依赖 比如下面这段代码: public class A{ public int i; } public class B{ public void put(A a){ System.out.println(a.i); } } 复制代码 上面这个例子中A类和B类之间存在一种强耦合关系, B 类直接依赖 A 类, B 类的 put 方法非 A 类类型不可,我们把这种情况叫做强耦合关系。 实际开发中应该做到: 编译期不依赖,运行时才依赖。 怎么理解呢?我们很容易想到 多态向上转型 ,是的,编译时不确定,运行时才确定,当然接触面更广一点的童鞋会想到 接口回调 ,是的接口回调方式也能有效的解耦!如下代码: //一个接口叫做Inter,里面定义了一个happy()方法,有两个类A、B实现了这个接口 interface Inter{ void happy(); } class A implements Inter{ @Override public void happy() { System.out.println("happy...A"); } } class B implements Inter{ @Override public void

设计模式:工厂

妖精的绣舞 提交于 2019-12-26 17:10:44
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 模拟不同披萨店制作不同口味的披萨的情景。 首先定义main方法,它需要各种各样的披萨。 public class PizzaTestDrive { public static void main(String[] args) { PizzaStore nyStore = new NYPizzaStore(); PizzaStore chicagoStore = new ChicagoPizzaStore(); Pizza pizza = nyStore.orderPizza("cheese"); System.out.println("Ethan ordered a " + pizza + "\n"); pizza = chicagoStore.orderPizza("cheese"); System.out.println("Joel ordered a " + pizza + "\n"); pizza = nyStore.orderPizza("clam"); System.out.println("Ethan ordered a " + pizza + "\n"); pizza = chicagoStore.orderPizza("clam"); System.out.println("Joel

php设计模式之工厂方法模式

核能气质少年 提交于 2019-12-25 17:48:56
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 假设你正在开发一款物流管理应用。最初版本只能处理卡车运输,因此大部分代码都在位于名为卡车的类中。 一段时间后, 这款应用变得极受欢迎。你每天都能收到十几次来自海运公司的请求,希望应用能够支持海上物流功能。 //工厂方法模式 abstract class Logistics { abstract function createTransport(): Transport; //交付 public function deliver() { $obj = $this->createTransport(); $obj->deliver(); } } //公路运输 class RoadLogistics extends Logistics { public function createTransport(): Transport { return new Truck(); } } //海洋运输 class SeaLogistics extends Logistics { public function createTransport(): Transport { return new Ship(); } } //运输 interface Transport { public function deliver(); }

工厂模式

社会主义新天地 提交于 2019-12-25 12:00:37
工厂模式有三种类型:简单工厂模式、工厂模式和抽象工厂模式~ 1、简单工厂模式:将运算和工厂分为两个部分,只有工厂类才能决定生产哪一个子类。代码实现如下: 测试代码: 执行结果如下: 2、工厂模式:工厂模式是在简单工厂模式的基础上改的,比起简单工厂模式更加的低耦合。将运算和工厂都抽象为一个接口类,这个时候工厂模式的子类就可以控制创建对象了,运算部分和简单工厂模式一样。代码实现如下: 测试代码: 结果如下: 3、抽象工厂模式:比起工厂模式,抽象工厂模式可以生产一系列的产品,而工厂模式只能生产一个。代码实现如下: 测试代码: 运行结果: 来源: CSDN 作者: Amber_LYP 链接: https://blog.csdn.net/weixin_44603985/article/details/103637855

工厂模式

邮差的信 提交于 2019-12-24 04:33:22
目录 简单工厂模式 工厂方法模式 抽象工厂模式 总结 简单工厂模式 说明:以下例子都是在python3.x中运行的 简单工厂模式最大的优点在于实现对象的创建和对象的使用分离,将对象的创建交给专门的工厂类或者方法负责,但是其最大的缺点在于工厂类不够灵活,增加新的具体产品需要修改工厂类的判断逻辑代码,而且产品较多时,工厂方法代码逻辑将会非常复杂。 栗1. class Animal ( object ) : def eat ( self , food ) : raise NotImplementedError ( ) class Dog ( Animal ) : def eat ( self , food ) : print '狗吃' , food class Cat ( Animal ) : def eat ( self , food ) : print '猫吃' , food def create_animal ( name ) : if name == 'dog' : return Dog ( ) elif name == 'cat' : return Cat ( ) def client ( ) : animal = create_animal ( 'dog' ) animal . eat ( '肉骨头' ) animal = create_animal ( 'cat' )

工厂模式-静态工厂

风流意气都作罢 提交于 2019-12-23 19:08:43
1.产品类 1.1产品的统一接口 [java] view plain copy /** * @Desc:产品的接口 * @author zy * @date 2016年6月21日下午4:40:33 */ public interface Product { /** * @Desc:获取具体的产品 * @author:zy * @version: 2016年6月21日 下午5:00:37 */ public void getDetailProduct(); } 1.2 A产品和B产品 [java] view plain copy public class A implements Product{ @Override public void getDetailProduct() { System.out.println( "get a product" ); } } public class B implements Product{ @Override public void getDetailProduct() { System.out.println( "get b product" ); } } 2.静态工厂方法 /** * Description: 简单工厂的静态工厂(和简单工厂方法不同,是优化简单工厂方法,省去了传入参数,根据参数判断,参数可能会传入错误) *

设计模式——工厂模式(简单工厂)

烂漫一生 提交于 2019-12-23 13:11:14
一、什么是工厂模式:   在人类社会发展中,起初人们生活所需品都是自供自给,饭菜,衣服,家具都是由自己制作,这样感觉人们要和很多行业有接触,很麻烦。后来逐渐出现了各种”工厂“,由他们代替你去生产所需品,你要什么式样的东西只要告诉它们,它们就会给你生产好,这样你可以抽出大量精力去做其他重要的事了。   在程序世界中也一样,以前每当我们需要什么实例对象,都是自己new出来的,这样的坏处是会和很多类有牵连,耦合度高(要new一只狗,就要引入Dog类,要new一只猫,就要引入Cat类),那我们完全可以像真实世界中一样,把这项工作交给”工厂“去办,我们要创建什么类型的实例,只要给工厂传入某种参数告知他们就行了,工厂会替你创建实例对象。这便是工厂模式思想。工厂模式分三种: 简单工厂模式,工厂方法模式,抽象工厂模式 。本篇讲解简单工厂模式。 二、简单工厂模式:       简单工厂模式是工厂模式中最简单简陋的形式。它的工厂类就是一个实实在在的具体工厂类,里面有逻辑判断,它会判断你传入的不同参数而创建不同的实例。按理说这样没问题,但这样是不完美的 , 请看例子: //抽象产品类:定义一类产品,接口或抽象类 public interface Animal { public void run(); //接口只声明方法,不实现 } //具体产品类1:Dog类实现Animal接口 public class

python建造者模式_1

 ̄綄美尐妖づ 提交于 2019-12-23 01:02:38
建造者模式 与工厂模式的区别: 工厂模式/抽象工厂模式与建造者模式最大的区别在于,工厂模式直接返回一个实例,使用实例的内在方法(各实例间使用同名方法) 工厂模式:调用工厂类直接返回一个可操作性实例 建造者模式:一个和多个对象类(内在方法),由指挥类去组装 来源: https://www.cnblogs.com/kaiseryin/p/11967656.html

设计模式 创建型---工厂模式

家住魔仙堡 提交于 2019-12-22 22:38:58
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 工厂模式,可以分为 简单工厂模式和抽象工厂模式。 一、简单工厂 、 1.1 简单工厂模式介绍 简单工厂模式属于创建型模式,是工厂模式的一种。 简单工厂模式是由一个工厂对象决定是由以一个工厂对象决定创建哪一种产品类的实例 。简单工厂模式是工厂模式家族中最简单使用的模式; 简单工厂模式:定义一个创建对象的类,由这个类封装实例化对象的行为代码; 在软件开发过程中,我们会使用到大量的创建某种、某类或者某批对象时我,就会使用到工厂模式。 1.2 简单工厂的优缺点 有点比较好理解,简单易操作; 缺点时违反了设计模式的ocp原则(开闭原则),即对外放开、对修改关闭。当我们需要给类增加新功能时,尽量不修改原有代码; 1.3 简单工厂例子 public interface Service { } public class Service1Impl implements Service { } public class Service2Impl implements Service { } public class Service3Impl implements Service { } public class SimpleFactory { public Service createService(Integer type) {

设计模式之工厂模式、简单工厂模式、抽象工厂模式

两盒软妹~` 提交于 2019-12-22 21:35:11
快餐点餐系统 想必大家一定见过类似于麦当劳自助点餐台一类的点餐系统吧。在一个大的触摸显示屏上,有三类可以选择的上餐品:汉堡等主餐、小食、饮料。当我们选择好自己需要的食物,支付完成后,订单就生成了。下面,我们用今天的主角--工厂模式--来生成这些食物的逻辑主体。 首先,来看主餐的生成(仅以两种汉堡为例) class Burger(): name="" price=0.0 def getPrice(self): return self.price def setPrice(self,price): self.price=price def getName(self): return self.name class cheeseBurger(Burger): def __init__(self): self.name="cheese burger" self.price=10.0 class spicyChickenBurger(Burger): def __init__(self): self.name="spicy chicken burger" self.price=15.0 其次,是小食。(内容基本一致) class Snack(): name = "" price = 0.0 type = "SNACK" def getPrice(self): return self