
设计模式
学习大话设计模式精髓“感受设计模式演变过程中所蕴含的大智慧,体会乐与怒的程序人生中值得回味的一幕幕。”
笑遥小哥哥
山坡若陡缓步迈
展开
-
简单工厂模式——选择实现
问题引入请用C++、Java、C#或VB.NET任意一种面向对象语言实现一个计算器控制台程序,要求输入两个数和运算符号,得到结果。新手最简单的写法class Program{ static void Main(String[] args) { Console.Write("请输入数字A:"); string A=Console.ReadLine(); Console.Write("请选择运算符号(+,=,-,*,/)"); string B=Console.ReadLine();原创 2020-08-14 10:49:35 · 338 阅读 · 0 评论 -
组合模式——统一叶子对象和组合对象
场景导入商品树-服装—男装-----衬衣-----T恤-----夹克—女装-----长裙-----短裙如何管理商品树呢?分公司及部门问题如何管理这些分公司及每一级分公司下的部门呢?场景思考这两种场景都有共同的特点:有一个根节点树枝节点(容器节点)叶子节点容器节点可以包含其他容器节点或者叶子节点如果将容器节点和叶子节点区别对待,不仅会让程序变得复杂,还会对功能的扩展也带来不便。比如商品的夹克继续按品牌划分,原有的夹克节点就从叶子节点变成了容器节点需要再改写代码增加容原创 2020-06-09 20:48:49 · 1131 阅读 · 0 评论 -
备忘录模式实例-象棋“悔棋”的实现
本例需提前了解:备忘录模式UML图象棋原发器类public class ChessmanOriginator { private String name;//各种状态 private int x;//各种状态 private int y;//各种状态 public ChessmanOriginator(String name, int x, int y) { this.name = name; this.x = x; this.y = y; } public Chess原创 2020-05-24 18:39:15 · 718 阅读 · 0 评论 -
抽象工厂模式——选择产品族实现
问题导入一个项目实现后可能给不同的客户使用,每个客户使用的数据库不同,在项目实现过程中就要考虑到如何满足不同客户不同数据库类型的需求(包括客户添加表的需求)。没有考虑到换数据库的数据库访问实例class User//数据库内的User表{ private int _id; public int ID { get{return _id;} set{_id=value} private string _name; public string Name { get{retu原创 2020-05-14 19:48:58 · 508 阅读 · 0 评论 -
备忘录模式-保护和恢复内部状态
Memento模式的关键就是要在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以利用该保存的状态实施恢复操作。Originator(原发器):创建一个备忘录,并存储它的当前内部状态,也可以使用备忘录来恢复其内部状态。Mementor(备忘录):存储原发器的内部状态,备忘录的设计一般可以参考原发器的设计,根据实际需要确定备忘录类中的属性。Caretaker(负责人):负责人又称为管理者,在负责人类中可以存储一个或多个备忘录对象,它只负责存储对象,而不能修改对象,原创 2020-05-24 18:27:32 · 405 阅读 · 0 评论 -
反射反射程序员的快乐——精解Java反射的使用
能够分析类能力的程序称为反射,反射机制的功能十分强大Class类是什么在java中万物皆对象,“在程序运行期间,Java运行时系统始终为所有的对象维护一个被称为运行时的类型标识。这个信息(*指运行时的类型标识)跟踪着每个对象所属的类。虚拟机利用运行时类型标识信息选择相应的方法执行。然而,可以通过专门的Java类访问这些信息(这些运行时的类型标识)。保存这些信息的类被称为Class。”以上引号内的内容来自于Java核心技术规范卷1,190页。我个人对这段通俗的理解:public class dog原创 2020-05-12 11:43:55 · 437 阅读 · 1 评论 -
Java用反射+配置文件结合抽象工厂模式实现数据库访问程序
前言:本文需对反射和抽象工厂模式有一定了解。了解->Java反射了解->抽象工厂模式IUser接口public interface IUser { void Insert(User user); User getUser(String id);}SqlserverUserpublic class SqlserverUser implements IUser { @Override public void Insert(User user) { System.out原创 2020-05-14 20:30:03 · 630 阅读 · 0 评论 -
状态模式——根据状态来分离和选择行为
状态模式主要解决的是当控制一个对象状态转化的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不太状态的一系列类当中,可以把复杂的判断逻辑简化。状态模式UML图State类,抽象状态类,定义一个接口以封装与Context的一个特定状态相关的行为abstract class State{ public abstract void Handle(Context context);//使用context去实现行为,保持了状态的一致性}ConcreteState类,具体类,每一个子类实现一个与原创 2020-05-09 21:11:43 · 373 阅读 · 1 评论