转自:http://www.cnblogs.com/haodawang/articles/5962531.html有时候我们的代码中为避免 NullPointerException 会出现很多的对Null的判断语句,而这些语句一旦多起来,我们的代码就会变的惨不忍睹,因此我们引入了空对象模式(null object pattern)以此来使我们的代码变的更优雅一点。下面来看一下空对象模式的大概视图为了方便我这里就直接用手写的了,大家谅解一下:) ,凑合着看吧假如我们需要查询某个学生的信息,我们输入学...
建造者模式又称为生成器模式,它是一种较为复杂、使用频率也相对较低的创建型模式。建造者模式为客户端返回的不是一个简单的产品,而是一个由多个部件组成的复杂产品。 一、建造者模式概述 建造者模式是较为复杂的创建型模式,它将客户端与包含多个组成部分的复杂对象的创建过程分离,客户端无须知道复杂对象的内部组成部分与装配方式,只需要知道所需的建造者类型即可。建造者模式关注如何一步步的创建一个复杂对象,不同...
动机 (Motivation)在软件系统中,经常面临着“某个对象”的创建工作; 由于需求的变化,这个对象经常面临着剧烈的变化,但是它却拥有比较稳定的接口。如何应对这种变化?如何提供一种“封装机制”来隔离出“这个易变对象”的变化,从而保持系统中“其他依赖该对象的对象”不随着需求改变而改变 ? 意图 (Intent)定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method 使得一个类的实例化延迟到子类。 ———《...
一、继承 js并没有继承这一个现有的机制,所以我们所说的继承是通过JS本身的机制去实现的。1、类式继承 1// 类式继承 2 3// 父类 4function SuperClass () {5this.superValue = true 6}7 8// 为父类原型添加方法 9 SuperClass.prototype.getSuperValue = function (arguments) {
10returnthis.superValue
11}
1213// 声明子类14function SubClass () {
15this.subValue = false16}
1718// 继承父类19 SubClass.prototype = new S...
#coding=utf-8‘‘‘面向对象中多态的讲解‘‘‘‘‘‘鸭子模型 多态 同样的消息被不同的对象接收‘‘‘from selenium import *class Framework(object): def __init__(self,frame): self.frame=frameclass Web(Framework): def __init__(self,frame=‘selenium‘): Framework.__init__(self,frame=frame)class App(Framework): def __init__(self,frame=‘Appnium‘): Framework.__init__(self,...
动机(Motivation)在软件系统中经常面临着“一系列相互依赖的对象”的创建工作,同时,由于需求变化,往往存在更多系列对象的创建工作。如何应对这种变化?如何绕过常规对象的创建,提供一种“封装机制”来避免客户程序和这种“多系列具体对象的创建工作”的紧耦合?意图(Intent)提供一个接口,让该接口负责创建一系列“相关或者相互依赖的对象”,无需指定它们具体的类。 ---《设计模式》 GoF结构 (Structure) 原文:...
一:工厂模式实现 设计模式是面向对象语言特有的内容,是我们在面临某一类问题时候固定的做法,设计 模式有很多种,比较流行的是:GOF(Goup Of Four)23 种设计模式。 工厂模式实现了创建者和调用者的分离,使用专门的工厂类将选择实现类、创建对象进 行统一的管理和控制。【操作】#工厂模式实现class CarFactory:def creatCar(self,brand):if brand == ‘奔驰‘:return Benz()elif brand == ‘宝马‘:return BMW()elif bra...
多态多态的实际含义:同一操作作用与不同的对象上面,可以产生不同的解释和不同的执行结果,就是说,给不同的对象发送同一个消息的时候,这些对象会根据这个消息分别给出不同的反馈代码如下: class Duck{};class Chicken{};let make = function(animal){//instanceof运算符用来判断一个构造函数的prototype属性所指向的对象是否存在另外一个要检测对象的原型链上if(animal instanceof Duck){console.log(‘gagaga‘);}elsei...
第一讲:1. 面向对象设计模式与原则设计模式简介: 每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。 ——Christopher Alexander{建筑师}软件设计师对设计模式的概念的理解:(1)设计模式描述了软件设计过程中某一类常见问题的一般性的解决方案。(2)面向对象设计模式描述了面向对象设计过程中、特定场景下、类与相互通信的对象之...
动机 (Motivation)在软件系统中,有时候面临着“一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是它们组合在一起的算法却相对稳定。如何应对这种变化?如何提供一种“封装机制”来隔离出“复杂对象的各个部分”的变化,从而保持系统的“稳定构建算法”不随着需求改变而变化 ? 意图(Intent) 将一个复杂对象的构建与其表示分离,使得同...
玩归玩闹归闹,别拿Java开玩笑? 好好学你这混蛋----不行不行这味太冲了..by:Mr.DaCon异常入门try...catch
的catch竟然可以多个判断.但是只会执行一次,catch就类似于break;自定义异常.首先先创建一个自定义异常类.继承Exception类
重写这个类的构造器.
重写toString(这个是异常后在控制台打印的信息)
在代码中创建异常:throw new MyException();
代码走到这里就会报异常啦
面向对象OOP开发在Java的世界,万物皆对象.本质就是:以...
增加遗漏的属性,指定属性的类型和可见性:在面向对象设计阶段,需要对每个类进行详细设计,不全过程中遗漏的属性,并且确定每个属性的数据类型,指定每个属性的可见性;属性的可见性指外部对象对属性的访问权限,一般包括私有,保护和共有几种类型;在实际开发中,除了那些比较简单且不常发生变化的属性可以直接暴露给客户以外,其他属性最好设置为私有或者保护并且最好都能用GetXXX()和SetXXX()等访问方法封装一下分配职责,定...
开闭原则:对扩展开放,对修改封闭解:易于扩展,便于维护。减少测试工作量。 里式替换原则:子类不要重写父类方法,保持父类方法在子类一样生效解:实现开闭原则的一种方式。不重写父类方法,就不会对既有功能造成影响,只是扩展实现。 依赖倒置原则:依赖于抽象,不要依赖于实现解:解耦。提高系统稳定性。避免并行开发。依赖于接口不依赖于实现,增加功能可以新增类,也是实现开闭原则的一种。 单一职责:控制类的粒度大小、将对...
普通懒加载多线程单例using System;
publicclass Singleton<T> where T : class, new()
{privatestaticvolatile T instance;privatestaticreadonlyobject syncRoot = newobject();publicstatic T GetInstance(){if(instance == null){lock (syncRoot){if(instance == null){instance = new T();}}}return instance;}
}publicclass MyClass : Singleton<MyClass>
{publicvoid Print(){Console.WriteLine("Hello World");}
}
publicc...
include 加载类的方法 中文意思是包含require 也是加载方法require_once 加载 上面所有的都有两个方法如:1 XX(“./Ren.class.name”) 2 XX “./Ren.class.name” 自动加载类的方法 有限制,必须在同一个目录下 所有类文件的命名规则一样!满足这俩条件function__autoload(classname){ require $classname.”class.php”} 设计模式 1,单例模式 类的计划生育 只能造出一个来 ...