工厂模式

设计模式之Factory

◇◆丶佛笑我妖孽 提交于 2019-11-27 07:35:25
工厂模式 工厂模式定义:提供创建对象的接口. 工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例对象,如A a=new A() 工厂模式也是用来创建实例对象的,所以以后new时就要多个心眼,是否可以考虑实用工厂模式,虽然这样做,可能多做一些工作,但会给你系统带来更大的可扩展性和尽量少的修改量。 来源: https://www.cnblogs.com/Aha-Best/p/11351299.html

用策略模式或工厂模式代替if-else

拟墨画扇 提交于 2019-11-27 03:13:11
正文 业务场景:根据条件判断调用支付宝,微信,或其他第三方支付; if(type==1){ 阿里支付(); }else if(type==2){ 微信支付(); }else{ 第三方支付(); } 如果还有更多的支付类型,就在后面使用 else if() 这也太那啥了吧。。。 代码 公共代码 AliPayStrategy /** * @author HJH * @Description: 支付宝 * @date 2019/8/12 15:56 */ public class AliPayStrategy implements PayStrategy { @Override public void pay(float money) { //调用支付宝的接口具体代码 略... if (money <= 200) { System.out.println("通过调用支付宝的接口" + "直接支付了" + money); } else { System.out.println("通过调用支付宝的接口" + "输入密码验证再支付了" + money); } } } WeChatPayStrategy /** * @author HJH * @Description: 微信 * @date 2019/8/12 15:57 */ public class WeChatPayStrategy

C#工厂模式案例

北城余情 提交于 2019-11-27 02:41:58
class JianDanGongChang { static void Main(string[] args) { Factory factory=new LianXiangFactory(); DianNao dianNao=factory.Create(); dianNao.Print(); } } public abstract class DianNao { public abstract void Print(); } public class LianXiang:DianNao { public override void Print() { Console.WriteLine("联想电脑"); } } public class DaiEr:DianNao { public override void Print() { Console.WriteLine("戴尔电脑"); } } public abstract class Factory { public abstract DianNao Create(); } public class LianXiangFactory:Factory { public override DianNao Create() { return new LianXiang(); } } public class DaiErFactory

常用的设计模式

末鹿安然 提交于 2019-11-27 01:27:29
常用的设计模式有哪些?很多时候一时想不起来。因此编个顺口溜方便记忆。 组织(组合模式)经过观察(观察者模式),命令(命令者模式)我,找个代理(代理模式),建个工厂(工厂模式),生产单例产品(单例模式),然后迭代(迭代模式)检查所有的产品,不合格的产品要适配(适配器模式)一下。 转载于:https://www.cnblogs.com/nzbbody/archive/2012/08/24/2654145.html 来源: https://blog.csdn.net/weixin_30588907/article/details/99234397

创建型模式之工厂模式(2.2)

ぐ巨炮叔叔 提交于 2019-11-27 00:54:16
什么是工厂模式? 工厂模式是创建型模式的一种,工厂是用来生产的,而在Java里,是用来生产对象实例的。 和单例模式相似,工厂模式同样聚焦于在考虑整个软件构建的情况下合理创建对象,从而保证软件的扩展性和稳定性。 工厂模式分为三种: 简单工厂模式 工厂方法模式 抽象工厂模式 简单工厂模式(实现服务端自扩展) 服务端:提供代码的人(作者) 客户端:使用代码的人(用户) 【对于程序员来说,自己是作者,用户是普通人;那么对于发明语言,框架的人来说,创建者是作者,而普通程序员是用户】 假设没有使用简单工厂模式: 定义一个Coder接口,然后定义JavaCoder和PythonCoder实现Coder接口。客户端通过new来创建对象。(耦合) //服务端 interface Coder { void express(); } class JavaCoder implements Coder { @Override public void express() { System.out.println("I am a Java Coder"); } } class PythonCoder implements Coder { @Override public void express() { System.out.println("I am a Python Coder"); } } //=====

设计模式之创建类模式大PK

对着背影说爱祢 提交于 2019-11-27 00:35:54
创建类模式大PK 创建类模式包括 工厂方法模式 、 建造者模式 、 抽象工厂模式 、 单例模式 和 原型模式 ,他们能够提供对象的创建和管理职责。其中单例模式和原型模式模式非常容易理解,单例模式是要保持在内存中只有一个对象,原型模式是通过复制的方式产生一个新的对象。而工厂方法模式、抽象工厂模式和建造者模式,这三者之间有较大的相似性。 工厂方法模式VS建造者模式 工厂方法模式注重的是整体对象的创建方法,而建造者模式注重的是部件构建的过程,旨在通过一步一步地精确构造创建出一个复杂的对象。就拿造车来说吧,工厂方法模式,直接生产出来的就是奔驰、宝马和大众;而建造者模式则不同了,则需要创建车胎、引擎、车门、座椅、车灯等等,然后组装成一辆奔驰或者宝马车。如下我们分别介绍两种模式的造车过程。 工厂方法模式造车 首先工厂方法模式的类图如下,其中我们将车辆分为三种奔驰、宝马、大众,定义一个接口,在定义三种车型的创建实现,通过汽车制造工厂生产汽车。通过类图代码略。 建造者模式造车 建造者模式设计一个车需要先把车进行拆分,分为引擎、车轮和车体三部分,然后由建造者进行建造,并通过设计图纸建造车辆,注重零件的配合、组装和封装从一个细微构件角度看待一个对象,建造者模式的类图如下。 这个看起来还有点复杂呢,我们还是看看通用类图的源码吧,一点一点的分析一下,首先我们还是先看看这个奔驰和宝马汽车吧

Java 设计模式 工厂模式

假装没事ソ 提交于 2019-11-26 22:17:25
话题引入: 对象的创建和生成 在我们需要创建一个对象时,可以通过各种方式。 最直接的方式莫过于new 了。另外也可以通过Class对象的newInstance(),以及 Constructor.newInstance(Class<?> ... args);进行创建。 1 public class ClassName{ 2 // The defintions of this class goes there. 3 } 4 5 // 通过new 创建 6 ClassName instance = new ClassName(); 7 8 9 // 通过newInstance创建 10 ClassName Instance = Class.forName("...ClassName" ).newInstance(); 11 ClassName Instance = ClassName. class .getDeclaredConstructor(Class<?> ... args); 12 13 // 通过已经存在的对象的clone()方法 14 15 ClassName newInstance = oldInstance.clone(); 16 17 // 通过序列化创建,原理是将当前存在某个对象序列化编程字节码。然后在另外一个地方读取,并构建成对象。 18 19 // 略 另外

策略模式+工厂方法消除if...else

天涯浪子 提交于 2019-11-26 16:51:10
今天来讲一下如何通过策略模式和工厂方法来消除累赘的if...else,具体什么是策略模式,大家可以自行百度学习,我就不再这里做过多的介绍了。 注意:如果业务场景简单,建议使用if...else,因为代码逻辑简单,便于理解 1.策略接口 1 /** 2 * 策略接口 3 * 4 */ 5 public interface Eat { 6 7 public void eatFruit(String fruit); 8 9 } 2.策略类 EatApple.java 1 /** 2 * 具体的策略类:吃苹果 3 */ 4 public class EatApple implements Eat{ 5 6 @Override 7 public void eatFruit(String fruit) { 8 System.out.println("吃苹果"); 9 } 10 11 } EatBanana.java 1 /** 2 * 具体的策略类:吃香蕉 3 */ 4 public class EatBanana implements Eat { 5 6 @Override 7 public void eatFruit(String fruit) { 8 System.out.println("吃香蕉"); 9 } 10 11 } EatPear.java 1 /** 2 * 具体的策略类

设计模式---------工厂模式

爱⌒轻易说出口 提交于 2019-11-26 16:49:40
工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。 一、简单工厂模式 简单工厂的定义:提供一个创建对象实例的功能,而无须关心其具体实现。被创建实例的类型可以是接口、抽象类,也可以是具体的类 实现汽车接口: public interface Car { String getName(); } 奔驰类: public class Benz implements Car{ @Override public String getName() { return "Benz"; } } 宝马类: public class BMW implements Car { @Override public String getName() { return "BMW"; } } 简单工厂类: public class SimpleFactory { public Car getCar(String name){ if (name.equals("Benz")) return new Benz(); if (name.equals("BMW")) return new BMW(); else {

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

限于喜欢 提交于 2019-11-26 16:49:32
简单工厂模式:。   简单的,只有一个工厂类,通过向工厂对象种传参来使工厂判断创建哪个类的对象,  通常通过if、switch语句来实现,由很大的缺点,如果我们再加入要创建的新的类  就必须要更改工厂的源代码才可以使得工厂支持创建这个新的类的对象。  shi'yongpackage main import "fmt" type Product interface { print() set(num int) } type Product1 struct { num int } func (it *Product1)print(){ fmt.Println(it.num) } func (it *Product1)set(num int){ it.num = num fmt.Println(it.num) } type Product2 struct{ num int } func (it *Product2)print(){ fmt.Println(it.num) } func (it *Product2)set(num int){ it.num = num fmt.Println(it.num) } type Factory struct { } func (it *Factory)createFactory(str string) (product Product){