简单工厂模式

设计模式之Memento(备忘机制)

无人久伴 提交于 2019-12-05 20:35:16
1、创建型模式 JDK1.5枚举Singleton 单例模式 AbstractFactory 工厂方法模式 简单工厂模式 Builder Prototype 2、结构型 java设计模式—Adapter模式 从Decorator,Adapter模式看Java的IO库 Bridge Composite Decorator 外观模式 Facade Pattern 享元模式 Flyweight Pattern 代理模式 3、行为型 职责链模式 Chain of Responsibility Pattern Java之命令模式(Command Pattern) Iterator ( JAVA迭代器与迭代模式 ) 调停者模式(Mediator) 设计模式之Memento(备忘机制) Observer State Strategy Visitor 原文作者: duanxz 原文地址:https://www.cnblogs.com/duanxz/p/3633475.html 来源: https://www.cnblogs.com/wjqhuaxia/p/11945718.html

设计模式--简单工厂

家住魔仙堡 提交于 2019-12-05 12:11:23
目标创建对象; 实现 1;实现工厂类 2;调用测试 <?php//调用工厂类require_once "./jiandangongcheng.php"; $po = array(); $po[] = pro::GetInstance(12,1); $po[] = pro::GetInstance(1,11); $po[] = pro::GetInstance(1,1); foreach ($po as $key => $value) { if ($value) { echo "<br/>"; $value->x_caozuo(); echo "<br/>"; $value->Y_caozuo(); }else { echo "非法"; } echo "<br/>"; }    1 <?php 2 //实现工厂类 3 interface product{ 4 function X_caozuo(); 5 function Y_caozuo(); 6 } 7 8 class Xproduct implements product{ 9 10 function X_caozuo(){ 11 echo "我实现了X操作"; 12 } 13 function Y_caozuo() { 14 echo "我没有实现Y_操作 "; 15 } 16 17 } 18 19 class

设计模式之简单工厂模式

这一生的挚爱 提交于 2019-12-05 06:27:45
本博客例子均来自 大话设计模式一书! 1.首先定一个计算器: 实现简单的加减乘除 public class Compute1 { public static void main(String args[]) { try { Scanner sc = new Scanner(System.in); String result = ""; System.out.println("请输入一个数字A"); int numA = sc.nextInt(); System.out.println("请输入一个数字B"); int numB = sc.nextInt(); sc.nextLine(); System.out.println("请输入运算符+-*/"); String Opration = sc.nextLine(); switch (Opration) { case "+": result = String.valueOf(numA + numB); break; case "-": result = String.valueOf(numA - numB); break; case "*": result = String.valueOf(numA * numB); break; case "/": if (numB == 0) { result = "除数不能为0";

简单工厂模式+泛型

雨燕双飞 提交于 2019-12-04 18:08:53
简单工厂模式 UML: 1.我们首先定义一个工厂模式的核心逻辑类:ProductFactoryClass, 2.然后抽象产品类:ProductClass1,ProductClass2 3.接口:IProduct 没啥好说的 直接贴代码吧: 1.外部调用时: 1 SimpleFactory<Product1> product = new SimpleFactory<Product1>(); 2 product.CreateShow().Product(20,200); 2.入口: 1 /// <summary> 2 /// 简单工厂 的实现层 3 /// </summary> 4 public class SimpleFactory<T> where T : new() 5 { 6 private static T _instance; 7 public T CreateShow() 8 { 9 if (_instance == null) 10 { 11 _instance = new T(); 12 } 13 return _instance; 14 } 15 } 3.抽象商品类: 1 public class Product1 : IProduct 2 { 3 public void Product(int count, double price) 4 { 5 Console

简单工厂模式

◇◆丶佛笑我妖孽 提交于 2019-12-04 07:51:30
披萨项目需求 萨的项目:要便于披萨种类的扩展,要便于维护。 1、披萨的种类很多(比如GreekPizz、CheesePizz等); 2、披萨的制作有prepare,bake, cut, box; 3、完成披萨店订购功能。 传统方式 1、我们将Pizza类相同的方法实现,将不同的方法做成抽象方法,由具体的子类去实现。 //将Pizza 类做成抽象 public abstract class Pizza { protected String name; //名字 //准备原材料, 不同的披萨不一样,因此,我们做成抽象方法 public abstract void prepare(); public void bake() { System.out.println(name + " baking;"); } public void cut() { System.out.println(name + " cutting;"); } //打包 public void box() { System.out.println(name + " boxing;"); } public void setName(String name) { this.name = name; } } 2、有两个子类奶酪披萨和希腊披萨。 public class CheesePizza extends Pizza {

设计模式——个人理解

懵懂的女人 提交于 2019-12-03 21:15:22
写在前面 设计模式是基于固定设计场景的一套解决方案,目的是为了完成开闭原则,或者说面向后续的需求变更,以成本最低的改动和测试完成新功能。同时设计模式也是一种程序员之间的交流语言,可以省去很多沟通成本。 在工作的过程中,从最初不知如何使用设计模式,到中间刻意使用设计模式,到今天稍有好转的正确的使用设计模式,踩了许多坑,也有过度设计的时候,为了避免今后在犯同样的错误,所以准备将自己在项目实践的过程中使用过的设计模式记录下来。 设计模式中,有一些实战里用过,有的没用过,没用过的应该是对这个设计方法没有领悟透彻,所以不知道该怎么用。 目前先按照自己的理解记录下来,有更深的领悟会更新。 创建型设计模式 1、工厂方法模式(FactoryMethod) 工厂方法模式的实质是“定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类。工厂方法让类的实例化推迟到子类中进行。” 工厂方法模式,是在抽象类中定义创建对象的方法,调用声明创建过程(抽象方法,但创建对象的过程的实现是在实现类中定义。 也就是说,在创建对象时,创建步骤是固定的,但各个步骤的实现是多种多样的,这种情况下可以使用工厂方法。 例如:创建一个电脑主机,需要安装CPU,内存,硬盘,显卡。这个安装步骤是固定的,但是由不同的工厂实现类去实现这几个步骤。 这种父类声明,子类实现的方式有很多,把这种方法用于创建对象,就叫工厂方法

简单工厂模式

*爱你&永不变心* 提交于 2019-12-03 16:58:06
简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式。 优点 工厂类是整个模式的关键.包含了必要的逻辑判断,根据外界给定的信息,决定究竟应该创建哪个具体类的对象.通过使用工厂类,外界可以从直接创建具体产品对象的尴尬局面摆脱出来,仅仅需要负责“消费”对象就可以了。而不必管这些对象究竟如何创建及如何组织的.明确了各自的职责和权利,有利于整个 软件体系结构 的优化。 缺点 由于工厂类集中了所有实例的创建逻辑,违反了 高内聚 责任分配原则,将全部创建逻辑集中到了一个工厂类中;它所能创建的类只能是事先考虑到的,如果需要添加新的类,则就需要改变工厂类了。 当系统中的具体产品类不断增多时候,可能会出现要求工厂类根据不同条件创建不同实例的需求.这种对条件的判断和对具体产品类型的判断交错在一起,很难避免模块功能的蔓延,对系统的维护和扩展非常不利; 这些缺点在 工厂方法模式 中得到了一定的克服。 代码实现 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DesignPattern { class Program { static void Main

简单工厂模式

大憨熊 提交于 2019-12-03 10:11:56
代码说明:一个动物基类Animal,两个子类分别是猫Cat和狗Dog。对于动物的叫声的调用,使用工厂CryFactory.Cry来选择对象进行实例后调用。 1.代码实现 using System; namespace mydotnet { class Program { static void Main(string[] args) { foreach(var arg in args) { Animal animal = CryFactory.Cry(arg); animal.Cry(); } } } public class CryFactory { public static Animal Cry(string type) { switch(type) { case "Cat": return new Cat(); case "Dog": return new Dog(); default: return new Animal(); } } } public class Animal { public virtual void Cry() { Console.WriteLine("^"); } } public class Cat:Animal { public override void Cry() { Console.WriteLine("喵喵"); } } public

简单工厂模式

淺唱寂寞╮ 提交于 2019-12-03 10:04:31
简单工厂模式,是 设计模式 中最为常见的模式之一。属于创建型模式,提供创建对象的最佳方式。工厂模式,顾名思义,一个模型,用来大规模的生产同类产品。该模式将对象的具体实例过程抽象化,并不关心具体的创建过程。通常,工厂模式被用来定义一个对象模型,之后,便可快速规模化实例化对象。 简单工厂模式的定义 提供一个创建对象实例的功能,而无须关心其具体实现。被创建实例的类型可以是接口、抽象类,也可以是具体的类。 简单工厂不是一个标准的设计模式,但是它实在是太常用了,简单而又神奇,所以需要好好掌握它,就当是学习设计模式的热身运动吧。 简单工厂模式的实质:一个工厂类根据传入的参数,动态决定应该创建哪一类产品类(这些产品类均继承自一个父类或接口)实例。 一般来说,简单工厂模式分为三种:普通简单工厂模式、多方法简单工厂模式、静态方法简单工厂模式。 这三种模式从上到下逐步抽象,并且更具一般性。 极客教程会给大家提供不同编程语言对简单工厂模式的实现,具体请参考: 简单工厂模式Java 简单工厂模式的优缺点 简单工厂模式有以下优点 帮助封装 简单工厂虽然很简单,但是非常友好地帮助我们实现了组件的封装,然后让组件外部能真正面向接口编程。 解耦 通过简单工厂,实现了客户端和具体实现类的解耦。 如同上面的例子,客户端根本就不知道具体是由谁来实现,也不知道具体是如何实现的,客户端只是通过工厂获取它需要的接口对象。

设计模式-简单工厂模式

大憨熊 提交于 2019-12-03 08:08:38
构造出一个工厂类,需要使用类型的对象,就返回什么类型的对象 以简单计算器为例 定义运算类,这是个父类,也是抽象类,这个类定义了一个抽象方法 1 abstract class Operation{ 2 public abstract double GetResult(); 3 private double _num1; 4 private double _num2; 5 public double Num1{ 6 get { return _num1; } 7 set { _num1 = value; } 8 } 9 public double Num2{ 10 get { return _num2; } 11 set { _num2 = value; } 12 } 13 public Operation(double num1, double num2){ 14 this.Num1 = num1; 15 this.Num2 = num2; 16 } 17 } 定义四个子类分别继承这个父类 1 class OperationForMul : Operation{ 2 public OperationForMul(double num1, double num2) : base(num1, num2) { } 3 public override double GetResult(){