设计模式
stepMoreForever
step more
展开
-
设计模式定义
设计模式 策略模式 (Strategy Pattern) 策略模式定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。 观察者模式 (Observer Pattern) 观察者模式定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者会收到通知并自动更新。 装饰者模式 (Decorator Pattern) 装饰者模式动态地将责任附加到对...原创 2018-11-18 14:34:40 · 253 阅读 · 0 评论 -
装饰者模式简单示例(二)
例子来源:《设计模式之禅》——第17章 装饰者模式 装饰者模式的通用类图: Component抽象构件 Component是一个接口或者是抽象类,就是定义我们最核心的对象,也就是最原始的对象。 ConcreteComponent具体构件 ConcreteComponent是最核心、最原始、最基本的接口或抽象类的实现,你要装饰的就是它。 Decorator装饰角色 一般是一个抽象类,实现接口或者抽...原创 2019-02-21 10:24:54 · 205 阅读 · 0 评论 -
适配器模式代码示例
例子来源:《设计模式之禅》——第19章 适配器模式 Target目标角色;Adaptee源角色;Adapter适配器角色。 Target public interface Target { void request(); } Adaptee public class Adaptee { public void doSomething(){ System.out....原创 2019-02-25 17:42:14 · 2716 阅读 · 0 评论 -
策略模式示例代码(二)
例子来源:《设计模式之禅》——第18章 策略模式 Context封装角色;Strategy抽象策略角色;ConcreteStrateg具体策略角色。 Strategy public interface Strategy { void doSomething(); } ConcreteStrategyA public class ConcreteStrategyA implements ...原创 2019-02-25 15:46:22 · 231 阅读 · 0 评论 -
抽象工厂示例(二)
例子来源:《设计模式之禅》——第9章 抽象工厂方法模式 AbstractProduct public abstract class AbstractProductA { public abstract void doSomething(); } public abstract class AbstractProductB { public abstract void doSome...原创 2019-02-23 21:14:27 · 208 阅读 · 0 评论 -
工厂方法模式示例(二)
例子来源:《设计模式之禅》——第8章 工厂方法模式 Product public abstract class Product { /** * 产品类的公共方法 */ public void method1(){ // 业务逻辑处理 } /** * 抽象方法 */ public abstract vo...原创 2019-02-23 11:17:56 · 137 阅读 · 0 评论 -
单例模式代码示例
饿汉式单例 public class Singleton { private static final Singleton singleton = new Singleton(); private Singleton(){ } public static Singleton getSingleton(){ return singleton; ...原创 2019-02-23 09:53:25 · 2770 阅读 · 0 评论 -
六大设计原则
六大设计原则 1.单一职责原则(Single Responsibility Principle) 定义:应该有且仅有一个原因引起类的变更。 单一职责原则的好处: 类的复杂性降低,实现什么职责都有清晰明确的定义 可读性提高,复杂性降低 可维护性提高,可读性提高 变更引起的风险降低 2.里氏替换原则(Liskov Substitution Principle) 定义: 1)如果对每一个类型为S的对...原创 2019-02-22 21:54:02 · 9790 阅读 · 0 评论 -
抽象工厂
抽象工厂模式 代码实例参考于《HeadFirst设计模式》 原材料准备 // 芝士 public interface Cheese { } // 蛤蜊 public interface Clams { } // 面团 public interface Dough { } // 酱 public interface Sauce { } // 蔬菜 public class Veggies { } /...原创 2019-01-22 15:21:05 · 100 阅读 · 0 评论 -
工厂方法模式
工厂方法模式 代码实例参考于《HeadFirst设计模式》。 工厂(factory)处理创建对象的细节。 抽象类 public abstract class Pizza { String name; String dough; String sauce; ArrayList toppings = new ArrayList(); void prepare(...原创 2019-01-22 11:28:34 · 104 阅读 · 0 评论 -
装饰者模式简单示例(一)
装饰者模式 代码实例参考于《HeadFirst设计模式》。 饮料的抽象类 public abstract class Beverage { String description = "Unknown beverage"; public String getDescription(){ return description; } // co...原创 2019-01-22 10:48:17 · 624 阅读 · 0 评论 -
策略设计模式简单示例
策略设计模式 代码实例参考于《HeadFirst设计模式》。以鸭子的行为为例。 接口 // 飞行行为的接口 public interface FlyBehavior { void fly(); } // 叫行为的接口 public interface QuackBehavior { void quack(); } 抽象类 public abstract class Duck { ...原创 2019-01-22 09:12:20 · 187 阅读 · 0 评论 -
享元模式示例代码
例子来源:《设计模式之禅》——第28章 享元模式 Flyweight:抽象享元角色 ConcreteFlyweight:具体享元角色 unsharedConcreteFlyweight:不可共享的享元角色 FlyweightFactory:享元工厂 Flyweight public abstract class Flyweight { private String intrinsic; ...原创 2019-02-26 17:01:20 · 948 阅读 · 0 评论