E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
设计模式学习笔记
设计模式学习笔记
(四)——Builder生成器模式
Builder生成器模式是一种创建型模式,它主要是应对项目中一些复杂对象的创建工作。所谓“复杂对象”,是只:此对象中还含有其它的子对象。Builder模式所面对的情况是:各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将他们组合在一起的算法却相对稳定。简单的说
·
2015-11-12 13:44
builder
设计模式学习笔记
(二)——Singleton单件模式
这是我写模式设计的第二篇,首先来说说设计模式的分类。 基本的23种设计模式从目的上可分为三种: 1、 创建型(Creational)模式:负责对象创建。 2、 结构型(Structural)模式:处理类与对象间的组合,可以
·
2015-11-12 13:43
Singleton
设计模式学习笔记
之桥接模式
这个模式在看书时,一直没想到更好的应用场景,由此感慨一下《设计模式之禅》这本书, 通过这本书,的确对各种模式有了个比较清晰的理解,甚至对模式的结构也能很明确。也就是说,知道了是怎么做的。但是也有其本身的缺点,由于里面的例子基本就是demo级别的,没有多大现实意义,所以,对于理论和实际的联系这块做的稍显不足。期待作者以后加强这块。感谢这本书领我入门。 于是我每学一个,都结合李建忠的视频课程来,他那
·
2015-11-11 17:57
设计模式
设计模式学习笔记
之组合模式模式
我们常常会遇到一类具有“容器”特征的对象,他们既是容器,本身也是对象。比如,公司人员管理中的人,他们是处于不同层级,每个层的人下边,又有下属。也就是数的结构。 而在客户端处理这种对象时,如果耦合性考虑的不好,就出现这种情况: 客户端要提前知道对象的结构,判断对象的类型,然后区分枝节点和叶子节点,区别处理。而在处理枝节点时,又要递归处理。 问题:耦合性过强,一旦变更类(而非接口
·
2015-11-11 17:54
设计模式
设计模式学习笔记
之中介者模式
最近在学习设计模式,把学习过程中的点滴思考记录下来,其中也有一些从网上看到的精彩解析。 先从中介者模式开始记录。 精髓:将一堆对象(同事类)之间的复杂交互,封装到中介类中,统一协调处理。 这个图挺经典的:是这个模式,类间的处理过程。 -------------------------------------------------------------
·
2015-11-11 17:50
中介者模式
设计模式学习笔记
-Adapter模式
Adapter模式,就是适配器模式,使两个原本没有关联的类结合一起使用。 平时我们会经常碰到这样的情况,有了两个现成的类,它们之间没有什么联系,但是我们现在既想用其中一个类的方法,同时也想用另外一个类的方法。有一个解决方法是,修改它们各自的接口,但是这是我们最不愿意看到的。这个时候Adapter模式就会派上用场了。Adapter模式有两种方式,一种是对象适配器,一种是类适配器。 1.对象适配
·
2015-11-11 13:40
Adapter
单例模式在多线程环境下的lazy模式为什么要加两个if(instance==null)
刚才在看阿寻的博客”C#
设计模式学习笔记
-单例模式“时,发现了评论里有几个人在问单例模式在多线程环境下为什么lazy模式要加两个if进行判断,评论中的一个哥们剑过不留痕,给他们写了一个demo来告诉他们为什么
·
2015-11-11 12:15
instance
设计模式学习笔记
Solid 原则 单一职责 开闭原则: 一个软件系统的设计应当尽量做到对扩展开放,对修改关闭。达到这个原则的途径就是遵循"对变化的封装"的原则。这个原则讲的是在进行软件系统的设计时,应当设法找出一个软件系统中会变化的部分,将之封装起来。 里氏代换原则 接口隔离原则 依赖倒置原则 创建型设计模式解决的创建者和被创建对象的
·
2015-11-11 08:32
设计模式
Java-马士兵
设计模式学习笔记
-建造者模式
一、概述 二、代码 1.Animal.java 1 public interface Animal { 2 public void bark(); 3 } 2.Dog.java 1 public class Dog implements Animal { 2 3 @Override 4 public void ba
·
2015-11-11 05:00
建造者模式
Java-马士兵
设计模式学习笔记
-总结
《马士兵设计模式学习》学习了以下模式: 1.装饰者模式(例子:水管工,木工) 2.策略模式(例子:老师用职称比大小、学生用成绩比大小) 3.简单工厂模式(例子:VechileFactory,CarFactory,PlaneFactory),方便产品维度的扩展,但生产系列产品不方便,且易工厂灰泛滥 4.抽象工厂模式(例子:三星工厂、海尔工厂)方便生产系列产品,但增加新产品时,要修改Abstr
·
2015-11-11 05:59
java
Java-马士兵
设计模式学习笔记
-命令模式
一、概述 命令模式 二、代码 1.Client.java 1 public class Client { 2 3 public void request(Server server){ 4 server.addCommand(new TextCommand()); 5 server.addCom
·
2015-11-11 05:58
java
Java-马士兵
设计模式学习笔记
-桥接模式
一、概述 1.桥接模式的应用情况:(1)两个维度扩展(2)排列组合 二、代码 1.Gift.java 1 public class Gift { 2 3 protected GiftImpl giftImpl; 4 } 2.GiftImpl.java 1 public class GiftImpl { 2 3 } &n
·
2015-11-11 05:58
java
Java-马士兵
设计模式学习笔记
-代理模式-动态代理 修改成可以任意修改代理逻辑
一、概述 1.目标:动态代理的代理逻辑可以任意修改 2.思路: (1)要把代理逻辑抽离,站在jvm的角度思考,应独立出InvocationHandler接口,并接收被代理的对象及方法作为参数invoke(Object o, Method m),并本身作为参数传给newProxyInstance(Class interfze,InvocationHandler handler)
·
2015-11-11 05:57
java
Java-马士兵
设计模式学习笔记
-代理模式-聚合与继承方式比较
一、概述 1.目标:要在Tank的move()方法做时间代理及日志代理(可以设想以后还要增加很多代理处理),且代理间的顺序可活更换 2.思路: (1)聚合:代理类聚合了被代理类,且代理类及被代理类都实现了movable接口,则可实现灵活多变,具体看代码 (2)继承:继承不够灵活,具体看代码 二、代码 1.Movable.java 2.Tank.java 3.Tank
·
2015-11-11 05:56
java
Java-马士兵
设计模式学习笔记
-代理模式--动态代理 修改成可以代理任意接口
一、概述 1.目标:把Proxy修改成可以代理任意接口及其任意方法 2.思路: (1)代理任意接口:把接口类型作为参数传给Proxy的newProxyInstance(Class interfze) (2)代理任意方法:用interfze.getMethods()取出所有方法,拼接实现方法的字符串 二、代码 1.Movable.java 2.Tank.java 3.
·
2015-11-11 05:56
java
Java-马士兵
设计模式学习笔记
-代理模式-动态代理 调用Proxy.newProxyInstance()
一、概述 1.目标:不自己写代理类,利用Proxy.newProxyInstance()动态生成 2.用到的知识点: (1)//编译源码,生成class,注意编译环境要换成jdk才有compiler,单纯的jre没有compiler,会空指针错误 JavaCompiler jc = ToolProvider.getSystemJavaCompiler(); (2)//文件管事器 Stan
·
2015-11-11 05:55
instance
Java-马士兵
设计模式学习笔记
-责任链模式-模拟处理Reques Response
一、目标 1.用Filter模拟处理Request、Response 2.思路细节技巧: (1)Filter的doFilter方法改为doFilter(Request,Resopnse,FilterChain),有FilterChain引用,为利用FilterChain调用下一个Filter做准备 (2)FilterChain继承Filter,这样,FilterChain既是FilterC
·
2015-11-11 05:54
response
Java-马士兵
设计模式学习笔记
-责任链模式-FilterChain功能
一、目标 增加filterchain功能 二、代码 1.Filter.java 1 public interface Filter { 2 public String doFilter(String str); 3 } 2.FilterChain.java 1 import java.util.ArrayList; 2 impor
·
2015-11-11 05:53
filter
Java-马士兵
设计模式学习笔记
-责任链模式-处理数据
一、目标 数据提交前做各种处理 二、代码 1.MsgProcessor.java 1 public class MsgProcessor { 2 3 private List<Filter> filters = new ArrayList<Filter>(); 4 private String msg;
·
2015-11-11 05:53
责任链模式
Java-马士兵
设计模式学习笔记
-观察者模式-模拟Awt Button
一、概述 Java 的Awt是 Observer模式,现用Java自己模拟awt中Button的运行机制 二、代码 1.Test.java 1 import java.text.DateFormat; 2 import java.text.SimpleDateFormat; 3 import java.util.ArrayList; 4 impor
·
2015-11-11 05:52
button
Java-马士兵
设计模式学习笔记
-观察者模式-AWT简单例子
1.AWT简单例子 TestFrame.java 1 import java.awt.Button; 2 import java.awt.Frame; 3 import java.awt.event.ActionEvent; 4 import java.awt.event.ActionListener; 5 import java.awt.event.WindowEvent
·
2015-11-11 05:51
观察者模式
Java-马士兵
设计模式学习笔记
-观察者模式-读取properties文件改成单例模式
一、概述 1.目标:读取properties文件改成单例模式 二、代码 1.Test.java 1 class WakenUpEvent{ 2 3 private long time; 4 private String location; 5 private Child source; 6
·
2015-11-11 05:50
properties
Java-马士兵
设计模式学习笔记
-观察者模式-读取properties文件,动态增加观察者
一、概述 1.目标:用observer.properties文件存储observer类,当要增加observer时,无需修改代码,修改properties文件即可 2.properties文件位置的关系:当properties文件放在src目录下时,由于编译会自动把src里的文件放到bin文件平,因此可用this.getClass.getClassLoader.getResourceAsStr
·
2015-11-11 05:50
properties
Java-马士兵
设计模式学习笔记
-观察者模式-OOD 封装Listener
一、概述 childe类中的是关联监听者dad的,若要再增加监听者,会很不方便,且要修改代码。好的方法是封装监听者类,用addListener()方法动态添加监听者 二、代码 1.Test.java class WakenUpEvent{ private long time; private String location; private
·
2015-11-11 05:49
listener
Java-马士兵
设计模式学习笔记
-观察者模式-OOD 封装event
把小孩醒来时的具体情况封装成事件类 Test.java class WakenUpEvent{ private long time; private String location; private Child source; public WakenUpEvent(long time, String location, Child source)
·
2015-11-11 05:48
event
Java-马士兵
设计模式学习笔记
-观察者模式-OOD 线程 改进
1.概述 由于上一个文章《Java OOD 线程》中的线程是父类主动监听childe,比较耗资源,现改进为childe类醒来后主动联系父类 2.代码 Test.java class Child implements Runnable { private Dad dad; public Child(Dad dad) { this.dad = dad; }
·
2015-11-11 05:48
观察者模式
Java-马士兵
设计模式学习笔记
-观察者模式-OOD线程
一、概述 1.情景:孩子睡觉,醒后要吃东西,用java模拟此情况 2.设计:child类,Dad类,都继承Runnable,dad线程监视child线程(缺点:因为要监视,所以耗cup资源) 二、代码 Test.java class Child implements Runnable { private boolean wakenUp = false; public
·
2015-11-11 05:47
观察者模式
Java-马士兵
设计模式学习笔记
-工厂模式-用Jdom模拟Spring
一、概述 1.目标:模拟Spring的Ioc 2.用到的知识点:利用jdom的xpath读取xml文件,反射 二、有如下文件: 1.applicationContext.xml <?xml version="1.0" encoding="UTF-8"?> <beans> <bean
·
2015-11-11 05:46
spring
Java-马士兵
设计模式学习笔记
-工厂模式-抽象工厂模式
一、概述 1.抽象工厂:当情况是需要产生一系列产品,若需更换产品,则要求一系列产品一起换,且要控制一系列产品的产生过程,此时可考虑抽象工厂模式。例:小明装修屋子,把电视、冰箱都替换掉,他这次需要把电视、冰箱换成三星的,下次装修可能要换成海尔的。此时可设计抽象类Telveison及Fridge负责产生产品,抽象工厂AbstractFactory负责产生一系列产品 PS:抽象工厂与普通工厂各自的优
·
2015-11-11 05:45
抽象工厂模式
Java-马士兵
设计模式学习笔记
-工厂模式-模拟Spring读取Properties文件
一、目标:读取properties文件,获得类名来生成对象 二、类 1.Movable.java public interface Movable { void run(); } 2.Car.java public class Car implements Movable { public void run() { System.out.printl
·
2015-11-11 05:45
properties
Java-马士兵
设计模式学习笔记
-工厂模式-简单工厂
一、概述 1.目标:要控制任意类型交通工具的生产模式 2.目标有两层意思(1)任意类型 (2)生产模式,所以对应的,要这两个层面上抽象(Movable,VehicleFactory),利用接口,实现多态 二、类结构 1.Interface Movable.java 2.Car.java 3.Plane.java 4.Interface VehicleFactory.j
·
2015-11-11 05:44
java
Java-马士兵
设计模式学习笔记
-工厂模式-单例及多例
一、单例的作用是用于控制类的生成方式,而不让外部类任意new对象 1.Car.java import java.util.ArrayList; import java.util.List; public class Car { //私有化构造函数,防止被外部的类new private Car() { } private static Car car = new
·
2015-11-11 05:43
java
Java-马士兵
设计模式学习笔记
-策略模式-模拟 Comparator接口
续上一篇 《Java 模拟 Comparable接口》 一、Teacher类及Student类的比较大小方式是不固定的,比如老师除了比较职称外,还可比较工龄大小,年龄大小等。则定义Comparator接口,不同比较方法去定义为一个xxComparator类,去实现Comparator接口,Teacher类及Student类引用具体的xxComparator比较器,则可实现灵活的比较方
·
2015-11-11 05:43
comparator
Java-马士兵
设计模式学习笔记
-策略模式-模拟Comparable接口
一、情况 1.目标:要在专门用于排序数据的DataSorter.java中实现对所有A类,B类,C类,D类等等的排序 2.初步想法:DataSorter.java的代码如下 public class DataSorter { public static void sort(A a){ } public static void sort(B a)
·
2015-11-11 05:42
comparable
设计模式学习笔记
比较常用的有24种. 为什么要学设计模式 设计面向对象软件比较困难,而设计可复用的面向对象软件就更加困难。你必须找到相关的对象,以适当的粒度将它们归类,再定义类的接口和 继承层次,建立对象之间的基本关系。你的设计应该对手头的问题有针对性,同时对将来的问题和需求也要有足够的通用性。你也希望避免重复设计
·
2015-11-11 04:47
设计模式
c++
设计模式学习笔记
(一)
1. Factory 模式 Factory设计模式是主要是为了方便对象的创建而建立的,封装了对对象的创建。这样我们就能通过调用ConcreteFactory中的CreateProduct ()方法创建一个Product 子类对象,而不需要过多的继承。Factory
·
2015-11-11 01:27
设计模式
设计模式学习笔记
(十四)——创建型模式总结
GoF23种设计模式中创建型模式有5种,分别是:Singleton单件模式、Abstract Factory抽象工厂模式、Builder生成器模式、Factory Method工厂方法模式、Prototype原形模式。下面分别总结这几种设计模式。 设计模式 GoF的描述 我的理解
·
2015-11-09 14:13
设计模式
设计模式学习笔记
(一)——面向对象设计模式与原则
今天听了《C#面向对象设计模式纵横谈(1):面向对象设计模式与原则》课程。总结了一些笔记。 首先介绍了什么是设计模式:设计模式描述了软件设计过程中某一类常见问题的一般性的解决方案。 下面主要讨论面向对象设计模式。 面向对象设计模式描述了类与相互通信的对象之间的组织关系。目的是应对变化、提高复用、减少改变。 那到底什么是对象:  
·
2015-11-09 14:12
设计模式
设计模式学习笔记
之单件模式
据说设计模式起源于建筑学,后来不知道从哪年开始软件设计中也有个设计模式,总之一句话,设计模式是用来解决软件设计过程中遇到的一些问题的经过前人实际经验认证的解决方案。有一位朋友设计模式研究的很好,他告诉过我:软件中永恒不变的是变化,设计好的软件、可复用性强,易修改,易扩充的软件必须做到,发现变化,封装变化,隔离变化。其中发现变化靠的是程序设计人员的经验,封装隔离变化靠的则是像设计模式这样的类的设计原
·
2015-11-08 16:27
设计模式
设计模式学习笔记
-命令模式
1. 概述 将一个请求封装为一个对象(即我们创建的Command对象),从而使你可用不同的请求对客户进行参数化; 对请求排队或记录请求日志,以及支持可撤销的操作。 2. 解决的问题 在软件系统中,行为请求者与行为实现者通常是一种紧耦合的关系,但某些场合,比如需要对行为进行记录、撤销或重做、事务等处理时,这种无法抵御变化的紧耦合的设计就不太合适。 3. 模式中角色 3.1 抽象
·
2015-11-08 15:16
设计模式
设计模式学习笔记
-外观模式
1. 概述 为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 2. 模式中的角色 2.1 外观类(Facade):外观类知道哪些子系统类负责处理请求,将客户的请求代理给恰当的子系统对象。 2.2 子系统类集合(SubSystem Classes):子系统类集合实现了子系统的功能,处理外观类对象指派的任务。 3. 模式解读
·
2015-11-08 15:15
设计模式
设计模式学习笔记
-适配器模式
1. 概述 将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。 2. 解决的问题 即Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。 3. 模式中的角色 3.1 目标接口(Target):客户所期待的接口。目标可以是具体的或抽象的类,也可以是接口。 3.2 需要适配的类
·
2015-11-08 15:14
适配器模式
设计模式学习笔记
-模板方法模式
1. 概述 定义一个操作中的算法的骨架,而将步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义算法的某些特定步骤。 2. 模式中的角色 2.1 抽象类(AbstractClass):实现了模板方法,定义了算法的骨架。 2.2 具体类(ConcreteClass):实现抽象类中的抽象方法,已完成完整的算法。 3. 模式解读 3.1 模板方法类图
·
2015-11-08 15:14
设计模式
设计模式学习笔记
-组合模式
1. 概述 将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。 2. 解决的问题 当希望忽略单个对象和组合对象的区别,统一使用组合结构中的所有对象(将这种“统一”性封装起来)。 3. 组合模式中的角色 3.1 组合部件(Component):它是一个抽象角色,为要组合的对象提供统一的接口。 3.2 叶子(Leaf)
·
2015-11-08 15:12
设计模式
设计模式学习笔记
-桥接模式
1. 概述 将抽象部分(Abstraction)与实现部分(Implementor)分离,使它们可以独立地变化。 2. 解决的问题 在软件系统中,有些类型由于自身的逻辑,它具有两个或多个维度的变化。为了解决这种多维度变化,又不引入复杂度,这就要使用Bridge模式。 3. 模式中的角色 2.1 抽象(Abstraction):定义抽象接口,该接口中包含实现具体行为、具体特
·
2015-11-08 15:11
设计模式
设计模式学习笔记
-准备篇
1. 设计模式的重要性 1.1 设计模式解决的是在软件过程中如何来实现具体的软件功能。实现同一个功能的方法有很多,哪个设计容易扩展,容易复用,松耦合,可维护?设计模式指导我们找到最优方案。 1.2 设计中往往会存在设计缺陷,这些缺陷包括: 僵化性:难以对软件进行改动,即使在功能上来看是很小的改动 脆弱性:在进行很小的改动时,可能导致很多地方出现问
·
2015-11-08 15:11
设计模式
设计模式学习笔记
-策略模式
在讲策略模式之前,我先给大家举个日常生活中的例子,从首都国际机场到XXX酒店,怎么过去?1)酒店接机服务,直接开车来接。2)打车过去。3)机场快轨+地铁 4)机场巴士 5)公交车 6)走路过去(不跑累死的话) 等等。使用方法,我们都可以达到从机场到XXX酒店的目的,对吧。那么我所列出的从机场到XXX酒店的的方法,就是我们可以选择的策略。 再举个例子,就是我们使用WCF时,往往避免不了对它
·
2015-11-08 15:10
设计模式
设计模式学习笔记
-代理模式
1. 概述 为其它对象提供一种代理以控制对这个对象的访问。 解决的问题:如果直接访问对象比较困难,或直接访问会给使用者或系统带来一系列问题。这样对于客户端(调用者)来说,就不需要直接与真实对象进行交互,解除了调用者与真实对象的耦合。 2. 模式中的角色 2.1 抽象实体(Subject):定义了真实实体(RealSubject)和代理(Proxy)的公共接口,这样就在任何时候使
·
2015-11-08 15:09
设计模式
设计模式学习笔记
-工厂方法模式
1. 概述: 定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到子类。 2. 模式中的角色 2.1 抽象工厂(Creator):这个抽象类(或接口)声明一个创建对象的工厂方法,用来返回一个Product类型的对象。 2.2 具体工厂(ConcreteCreator):重定义工厂方法,返回一个具体的Concrete Product实例。 2.
·
2015-11-08 15:08
工厂方法模式
设计模式学习笔记
-装饰模式
1. 概述 动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更灵活。 原理:增加一个修饰类包裹原来的类,包裹的方式一般是通过在将原来的对象作为修饰类的构造函数的参数。装饰类实现新的功能,但是,在不需要用到新功能的地方,它可以直接调用原来的类中的方法。修饰类必须和原来的类有相同的接口。 2. 模式中的角色 2.1 抽象构建(Component):定义一个抽象
·
2015-11-08 15:08
设计模式
上一页
11
12
13
14
15
16
17
18
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他